Heim >Backend-Entwicklung >PHP-Tutorial >set_include_path-Nutzung
Nachdruck von: http://blog.sina.com.cn/s/blog_4ce89f200100twbl.html
http://blog.sina.com . cn/s/blog_815611fb0101cqgy.html
Als ich heute den Quellcode im Unternehmen studierte, sah ich eine Codezeile wie set_include_path(dirname(__FILE__)); und ich war sehr verwirrt. Also habe ich auf Baidu gesucht und mir das php.net-Handbuch angesehen, aber ich habe immer noch nicht ganz verstanden, was es bewirkt.
Ich habe zufällig einen anderen Code gesehen, war dann inspiriert und habe ihn getestet, und er war wie erwartet!
Lassen Sie mich nun zusammenfassen:
Zunächst ändert die Funktion set_include_path dynamisch den include_path in PHP.ini im Skript von.
Dieser include_path kann auf den Pfadbereich von include und require unten beschränkt werden oder vordefiniert werden.
ist wie folgt:
Wenn wir diesen Wert nicht festlegen, müssen wir möglicherweise einige vollständige Pfade schreiben:
include("123/test1.php");
include("123/test2.php " );
include("123/test3.php");
> Es gibt viele externe Dateien, aber wenn wir set_include_path festlegen („123/“) können wir stattdessen den folgenden Code verwenden.
set_include_path("123/");
include( "test1.php");
include("test2.php"); include("test3.php");
require
("test4.php");
require("test5.php");
?>
Denn wenn die Operation include oder require
ausgeführt wird, wird der durch include_path angegebene Pfad nach der zu importierenden Datei durchsucht, obwohl ich das nicht tue Ich weiß nicht, wie es jetzt geht. Ich weiß nicht, ob dies die Leistung optimiert, aber es ist sicher, dass dadurch Code eingespart werden kann. Haha~ Also am Anfang dachte ich, es wäre dasselbe, ob ich es hinzufüge oder nicht, weil ich nur eine Datei in diesen Ordner eingefügt habe.
Später entdeckte ich endlich das Geheimnis! Bedauerlich ist, dass es im Internet keinen Artikel wie meinen gibt … derselbe Artikel wird immer wieder veröffentlicht.
Dann kann diese Funktion nicht nur einen Ordner definieren, wir können viele Ordner definieren. Wie unten gezeigt, möchte ich eine Initialisierungsfunktion schreiben: function initialize()
{
set_include_path(get_include_path()). PATH_SEPARATOR . "core/");
set_include_path(get_include_path().PATH_SEPARATOR . "app/");
set_include_path(get_include_path().PATH_SEPARATOR . "admin / ");
set_include_path(get_include_path().PATH_SEPARATOR . "lib/");
set_include_path(get_include_path().PATH_SEPARATOR . "include/");
set_include_path(get_include_path().PATH_SEPARATOR."data/");
set_include_path(get_include_path().PATH_SEPARATOR."cache/");
}
So wird sein Pfad zu:
.;C:php5pear;core/;app/;admin/;lib/;include /; data/;cache/
Hey, wir haben festgestellt, dass noch einer vor uns liegt.;C:php5pear;Was zum Teufel ist eigentlich los, wenn wir nichts schreiben? Geben Sie einfach zuerst den include_path aus. Sie werden feststellen, dass er .;C:php5pear; ist. Damit können Sie zu jeder importierten Datei wechseln.
Wenn viele weitere Ordner geladen werden, können wir den Dateinamen einfach direkt schreiben!
Aber genau wie meine ursprüngliche Frage: Warum unterscheidet sich der Code unseres Unternehmens von dem anderer Leute? Es stellt sich heraus, dass ich einfach einen
set_include_path(dirname (__FILE__) schreibe? );
Wenn ich dann Dateien aus anderen Ordnern importiere, wird eine Fehlermeldung angezeigt, dass sie in dem von mir angegebenen Ordner nicht gefunden werden können.
Zuerst verwenden wir eine andere Methode zur Ausgabe:
set_include_path (dirname (__FILE__));
$include_value = ini_get('include_path');
echo $include_value;
? > ;
Das Ergebnis ist: D:AppServwww
Wenn ich auf www gehe, um die Datei test4.php zu finden, wird kein Fehler gemeldet
include("test4.php");
Aber wenn ich nach
include("test1.php"); suche
meldet einen Fehler:
Warnung: include() [function.include]: Fehler beim Öffnen von „test1 .php ' für die Aufnahme (include_path='D:AppServwww') inD:AppServwwwtest.phponline6
Und wir haben auch festgestellt, dass .;C:php5pear; ersetzt worden. Wenn wir es also verwenden und nicht nur Dateien in einem Ordner einführen, müssen wir get_include_path().PATH_SEPARATOR voranstellen.
Erklären Sie:
get_include_path() soll den Standardwert des aktuellen include_path abrufen
Abschließend möchte ich noch sagen, dass wir auch eine andere Methode verwenden können: die originellste:
ini_set('include_path', 'directory name');
Darüber hinaus sind zwei Punkte zu beachten:
Wenn die erforderliche Datei im angegebenen nicht gefunden werden kann Verzeichnis, und es befindet sich zufällig im aktuellen Seitenverzeichnis. Wenn eine Datei mit diesem Namen vorhanden ist, wird die Datei im aktuellen Verzeichnis standardmäßig importiert.