2016-11-06 3 views
0

Meine Anwendung leitet jede Anfrage über eine Indexdatei weiter. Diese Datei enthältDefinieren von Konstanten in der Indexdatei

require_once $_SERVER['DOCUMENT_ROOT'] . "/app/config/config.php".

Diese Konfigurationsdatei definiert Pfadkonstanten, so dass sie an anderer Stelle verwendet werden können, aber es scheint nicht zu funktionieren. Zum Beispiel in config.php Ich habe

define('MODELS', $_SERVER['DOCUMENT_ROOT'] . "/app/models/");.

In einem der Modelldateien ich eine andere Klasse zu schließen versuche wie

require_once MODELS . "classA.php"

class classB {.....}

Ich erhalte eine Fehlermeldung für nicht definierte Konstante MODELS. Irgendwelche Ideen, wie das zu beheben ist? Ich möchte im Idealfall, dass diese Konstanten von überall in meiner Anwendung zugänglich sind.

config.php:

$root = $_SERVER['DOCUMENT_ROOT'] . "/"; 
define("APP",$root . "app/"); // app folder 
define("CONFIG",$root . "app/config/"); // config folder 
define("MODELS",$root . "app/models/"); // models folder 
define("CONTROLLERS",$root . "app/controllers/"); // controllers folder 
define("DB",$root . "app/db/"); // database connection folder 
define("VIEWS",$root . "app/views/"); // views folder 
define("FUNCTIONS",$root . "app/functions/"); // functions folder 
define("LIBRARY",$root . "app/library/"); // library folder 
define("PUBLIC",$root . "public/"); // public folder 

index.php:

require_once $_SERVER['DOCUMENT_ROOT'] . "/app/db/dbconnect.php"; 
require_once $_SERVER['DOCUMENT_ROOT'] . "/app/config/config.php"; 
require_once FUNCTIONS . "clean.php"; 
require_once MODELS . "core.php"; 
require_once MODELS . "user.php"; 
require_once MODELS . "browser.php"; 
require_once MODELS . "call.php"; 
require_once MODELS . "module.php"; 

Fehler kommen aus einiger Datei:

if(isset($_POST['submit']) && $_POST['submit'] == "Send") 
{ 
require_once MODELS . "contact.php"; 
$contact = new contact(); 
} 
+0

'define ('Model', $ value)' –

+0

@u_mulder sorry, das war ein Tippfehler, tut mein eigentliches Code Anführungszeichen enthalten – joshpj1

+0

Entweder Sie nennen Konstanten falsch oder Config-Datei nicht enthalten. –

Antwort

1

Quick Fix aber schlechte Idee:

Verwenden Ihre index.php Datei als globale r Bezugspunkt zusammen mit der PHP-Magischen Konstante __DIR__.

index.php

require_once __DIR__."/config.php"; // This loads your constants 

config.php

define('PATH', __DIR__."/any_folder_you_want"); // Repeat this for your folders 

Doing es richtig:

Generell Sie wollen nicht Ihr Projekt, das so zu organisieren, da es führen könnte, zu großen Architekturproblemen in der Zukunft.

Lösungen:

  • lernen, wie man sich composer
  • implementieren eine PSR-4 Autoloading Strategie verwenden. Example here
Verwandte Themen