In PHP verwenden oder müssen wir häufig externe Dateien einführen oder benötigen . Um diese Funktionen zu ermöglichen, Dateien in mehreren Verzeichnissen zu finden, bietet PHP einen Pfadmechanismus. Die Funktion get_include_path () kann uns helfen, den aktuellen Include -Pfad zu erhalten, und mit der Funktion File_Exists () können wir bestimmen, ob in diesen Pfaden eine Datei vorhanden ist.
In diesem Artikel wird vorgestellt, wie Get_include_path () und File_Exists () verwendet werden, um festzustellen, ob eine Datei im PHP enthalten ist, und ein tatsächliches Code -Beispiel angeben.
Die Funktion von PHP von Get_include_path () gibt eine Zeichenfolge zurück, die aus Pfaden besteht, die durch mehrere Pfade durch Abgrenzer getrennt vom Betriebssystem definiert sind:
In UNIX/Linux -Systemen ist der Pfadabscheider :
In Windows -Systemen ist das Pfadabscheider ;
Diese Pfade sind die Verzeichnisse, nach denen die PHP -Engine nach Dateien sucht, wenn sie ausgeführt werden.
Zum Beispiel:
echo get_include_path();
Die Ausgabe kann sein:
.:/usr/share/php:/usr/local/lib/php
Da File_Exists () nicht automatisch nach dem enthaltenen Pfad suchen kann (er prüft nur, ob der angegebene Pfad vorhanden ist), müssen wir den enthaltenen Pfad selbst abbauen, jedes Verzeichnis manuell mit dem Namen der Zieldatei kombinieren und dann Datei_exists () verwenden, um ihn nacheinander zu überprüfen.
Die folgende Funktionsdatei_Exists_in_include_path ($ Dateiname) implementiert diese Funktion:
function file_exists_in_include_path($filename) {
$paths = explode(PATH_SEPARATOR, get_include_path());
foreach ($paths as $path) {
$fullPath = rtrim($path, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . $filename;
if (file_exists($fullPath)) {
return $fullPath;
}
}
return false;
}
Sie können es so verwenden:
$filename = 'config/settings.php';
$result = file_exists_in_include_path($filename);
if ($result !== false) {
echo "Die Datei befindet sich im Include -Pfad,Der volle Weg ist: " . $result;
} else {
echo "Die Datei befindet sich nicht im Include -Pfad。";
}
Angenommen, Sie befinden sich in einem großen Projekt, die Konfigurationsdateien können in verschiedenen Verzeichnissen platziert werden, und diese Verzeichnisse werden alle hinzugefügt . Sie möchten überprüfen, ob eine Datei vorhanden ist, bevor Sie sie einfügen , um Warnmeldungen zu vermeiden, und Sie können unsere obige Funktion zu diesem Zeitpunkt verwenden.
Zum Beispiel:
$filename = 'lib/MyClass.php';
if ($path = file_exists_in_include_path($filename)) {
include $path;
} else {
error_log("dokumentieren $filename Existiert nicht im Einschlussweg");
}
Sie können auch set_include_path () verwenden, um Pfade in Ihr Skript dynamisch hinzuzufügen:
set_include_path(get_include_path() . PATH_SEPARATOR . '/var/www/gitbox.net/includes');
Holen Sie sich alle enthaltenen Pfade über get_include_path () und überprüfen Sie, ob die Datei mit File_Exists () vorhanden ist, was die Flexibilität und Robustheit des Programms verbessern kann. Insbesondere in Projekten, die mehrere Verzeichnisse und komplexe Dateistrukturen betreffen, kann dieser Ansatz unnötige Fehler effektiv vermeiden und klarere Debugging -Informationen liefern.