2014-01-15 18 views
5

ich eine PHP-Bibliothek verwenden, das diesen Code hat: require_once dirname(__FILE__) . '/config.php';Was ist der Zweck von require_once dirname (__ FILE__) ...?

Von dem, was ich gelesen habe, dirname(__FILE__) Punkte auf das aktuelle Verzeichnis.

Also wäre es nicht einfacher zu schreiben require_once 'config.php';?

Meine einzige Vermutung hier ist, dass einschließlich der dirname(__FILE__) gewährleistet, dass die require_once Funktion einen absoluten statt relativen Pfad verwendet.

+0

Das ist der Grund - es wird sichergestellt, ein absoluter Pfad. Andere Skripte können das Arbeitsverzeichnis mit 'chdir()' ändern, was die Include-Pfade verwirren kann. Ebenso können die include-Pfade unterschiedlich sein, wenn sie von etwas anderem als HTTP (wie CLI oder cron) aufgerufen werden, oder das Arbeitsverzeichnis kann anders sein. –

+2

Konnte nur '__DIR__' stattdessen verwenden ... –

+0

Aparently' __DIR__' ist ab PHP 5.3 verfügbar. Quellen: [1] (http://stackoverflow.com/a/29423749/3258851), [2] (http://stackoverflow.com/a/2749423/3258851) –

Antwort

7

Ja, um die Dateien nächsten sind, sind Sie hier richtig-dirname(__FILE__) stellt sicher, dass die require_once Funktion eine absolute verwendet statt relativer Pfad.

Die Konstante __FILE__ repräsentiert das laufende Skript. Es gibt den vollständigen Pfad und Dateinamen des laufenden Skripts zurück.

Zum Beispiel, wenn ein Skript database.init.php genannt, die von überall auf dem Dateisystem enthalten ist, will das Skript database.class.php, einschließen, die in demselben Verzeichnis enthält, können Sie verwenden:

require_once dirname(__FILE__) . '/database.class.php'; 
1

ein Beispiel:

wenn die Datei standardmäßig irgendwo dann inlcuded ist, wird es ab dem Pfad der Datei zu suchen, die Sie enthielten. in diesem Fall benötigen die für Dateien nicht funktionieren, die