A. Was macht das?Was beinhaltet der Dot-Slash für PHP Aufrufe?
require ("./file.php");
B. im Vergleich dazu?
require ("file.php");
(Seine nicht up-on-Verzeichnis .. was wäre)
require ("../file.php");
A. Was macht das?Was beinhaltet der Dot-Slash für PHP Aufrufe?
require ("./file.php");
B. im Vergleich dazu?
require ("file.php");
(Seine nicht up-on-Verzeichnis .. was wäre)
require ("../file.php");
./
ist das aktuelle Verzeichnis. Es ist weitgehend das gleiche wie nur file.php
, aber in vielen Fällen (dieses eine enthalten) überprüft es keine Standardplätze PHP könnte nach einer Datei suchen, statt nur das aktuelle Verzeichnis.
Vom PHP documentation (man beachte den letzten Satz):
Dateien einschließlich werden, werden zuerst in jedem include_path Eintrag relativ zum aktuellen Arbeitsverzeichnis, und dann in dem Verzeichnis der aktuellen Skript. Z.B. Wenn Ihr include_path Bibliotheken ist, ist das aktuelle Arbeitsverzeichnis/www /, Sie haben include/a.php eingeschlossen und es gibt "b.php" in dieser Datei, b.php wird zuerst in/www/libraries/und dann in/www/include /. Wenn Dateiname mit ./ oder ../ beginnt, wird nur im aktuellen Arbeitsverzeichnis gesucht.
Die erste Version zwingt den internen Mechanismus zum Einbinden von Dateien relativ die zu ... direkt ausgeführte Datei. So zum Beispiel haben Sie
index.php
// directly executed script (php -f index.php or from a browser)
include 'second.php';
second.php
// This is included relatively to index.php
// Actually, it is first searched relatively to include_path, then relatively
// to index.php
include './third.php';
third.php
// This is included relatively to second.php ONLY. It does not search
// include_path
return "foo";
Haben Sie irgendwelche Beweise (Handbuch) dafür? –
Ich hatte ein paar Fehler, die ich jetzt korrigiert habe, die Reihenfolge der Suche war falsch. Der Beweis ist die Antwort über meiner. –
Es ist ausdrücklich die aktuellen Verzeichnis.
Einfach sagen Sie php, um die Datei in das aktuelle Verzeichnis nur oder scheitern, wenn die Datei nicht vorhanden ist.
Wenn Sie das Format "indexcommon3.php" verwenden und die Datei nicht vorhanden ist, sucht php nach der Systemvariablen include_path.
Als Referenz können Sie http://www.php.net/manual/en/function.include.php
Die kurze Antwort verwenden
Du hast Recht, es ist nicht ein Verzeichnis nach oben. EIN . bezieht sich auf das Verzeichnis, in dem Sie sich befinden, und .. verweist auf das übergeordnete Verzeichnis.
Bedeutung, ./file.php und file.php sind in PHP funktional gleichwertig.Hier ist die relevent Seite der Dokumentation: http://us.php.net/manual/en/wrappers.file.php
Die längere Antwort
Allerdings nur, weil sie das gleiche in diesem Zusammenhang arbeiten, bedeutet nicht, sie sind immer gleich.
Wenn Sie in einer * nix-Shell-Umgebung arbeiten und den Namen einer ausführbaren Datei eingeben, sucht die Shell in den PATH-Verzeichnissen, aber sie wird weder in der CWD noch in dem Verzeichnis angezeigt, in dem Sie sich befinden. sind momentan in
Also, wenn Sie in einem Verzeichnis sind, das eine Datei namens. myprogram.php (dies würde eine PHP-CLI-Datei), und Sie geben Sie einfach:
myprogram.php
es Es spielt keine Rolle, ob Ihr Programm ausführbar ist oder nicht. Die Shell wird in/bin /,/usr/bin/etc nach Ihrer Datei suchen, aber nicht nach ./ oder dem Verzeichnis, in dem Sie sich befinden.
Um dieses Programm auszuführen, ohne Ihr Verzeichnis hinzuzufügen die PATH, müssen Sie
./myprogram
Also wirklich geben, ./ ist expliziter. Es bedeutet, dass "die Datei, die Sie suchen, genau hier sein muss" und no./Bedeutet, "die Datei sollte irgendwo sein, wo das Programm nach Dateien sucht".
Der Punkt-Schrägstrich zwingt die Datei dazu, nur im aktuellen Verzeichnis gefunden zu werden, anstatt zusätzlich die in der Einstellung include_path angegebenen Pfade zu durchsuchen.
so, das require ("./file.php"); ist schneller als require ("file.php"); ? – webelizer