set_include_path ist eine PHP-integrierte Funktion, die den Pfad für die aktuelle Skriptlaufzeit festlegt. Der mitgelieferte Pfad ist eine Liste der von PHP verwendeten Positionen, um Funktionen zu finden , z .
Mit set_include_path können Sie diese Pfade dynamisch hinzufügen und ersetzen, wodurch flexible Dateiverwaltung erreicht wird.
Nehmen wir an, Sie haben mehrere Verzeichnisse, die zum Beispiel in den Include -Pfad hinzugefügt werden müssen:
/var/www/project/lib
/var/www/Projekt/Modelle
/var/www/project/helpers
Sie können die folgenden Methoden dynamisch hinzufügen:
<?php
// Holen Sie sich zuerst den aktuell enthaltenen Pfad
$currentPath = get_include_path();
// Verzeichnis hinzugefügt,Für mehrere VerzeichnissePATH_SEPARATORTrennung
$newPaths = '/var/www/project/lib' . PATH_SEPARATOR .
'/var/www/project/models' . PATH_SEPARATOR .
'/var/www/project/helpers';
// Gehen Sie ein neues Verzeichnis an den vorhandenen Pfad an
set_include_path($currentPath . PATH_SEPARATOR . $newPaths);
// Überprüfungsergebnisse
echo get_include_path();
?>
Dieser Code erhält zuerst den aktuell enthaltenen Pfad und verbindet dann mehrere Verzeichnisse mit dem Pfadabscheider, der dem Betriebssystem entspricht (Dickdarm ":" Unter Linux und Semikolon ";" unter Windows) und findet schließlich den neuen Pfad an den ursprünglichen Pfad an.
Manchmal ist der Verzeichnispfad dynamisch oder stammt aus einem Array. Sie können die folgende Methode verwenden:
<?php
$dirs = [
'/var/www/project/lib',
'/var/www/project/models',
'/var/www/project/helpers',
];
// Holen Sie sich den aktuell enthaltenen Pfad
$currentPath = get_include_path();
// Konvertieren Sie das Array in String,verwendenPATH_SEPARATORTeilt
$newPaths = implode(PATH_SEPARATOR, $dirs);
// Stellen Sie einen neuen Pfad ein,Methode hinzufügen
set_include_path($currentPath . PATH_SEPARATOR . $newPaths);
// Sehen Sie sich die Ergebnisse an
echo get_include_path();
?>
Auf diese Weise können sie flexibel hinzugefügt werden, egal wie viele Verzeichnisse sind.
Es wird empfohlen , relative Pfade zu verwenden, z .
<?php
$dirs = [
__DIR__ . '/lib',
__DIR__ . '/models',
__DIR__ . '/helpers',
];
set_include_path(get_include_path() . PATH_SEPARATOR . implode(PATH_SEPARATOR, $dirs));
?>
Verwenden Sie Get_include_path (), um den aktuellen Pfad zu erhalten, und fügen Sie ihn an, um das Zurücksetzen zu vermeiden und zu verfallen, dass einige Systempfade verloren gehen.
Verwenden Sie in Verbindung mit set_include_path den automatischen Lademechanismus, um die Klassendatei -Laden zu vereinfachen:
<?php
set_include_path(get_include_path() . PATH_SEPARATOR . __DIR__ . '/lib');
spl_autoload_register(function($class) {
include $class . '.php';
});
?>
Wenn einige Skripte den enthaltenen Pfad nur vorübergehend ändern, können Sie restore_include_path () nach der Ausführung aufrufen, um zum Standardzustand zurückzukehren.
<?php
// Fügen Sie dynamisch mehrere Verzeichnisse hinzu zuinclude_path
$directories = [
__DIR__ . '/lib',
__DIR__ . '/models',
__DIR__ . '/helpers',
];
// Holen Sie sich den aktuell enthaltenen Pfad
$currentIncludePath = get_include_path();
// Neue Wege zusammenführen
$newIncludePath = $currentIncludePath . PATH_SEPARATOR . implode(PATH_SEPARATOR, $directories);
// Stellen Sie einen neuen Pfad ein
set_include_path($newIncludePath);
// Drucken überprüfen
echo "Der derzeit enthaltene Pfad ist:\n";
echo get_include_path();
?>
set_include_path wird verwendet, um den PHP -Pfad für PHP -Skripte zu setzen.
Verwenden Sie Path_separator , um eine Verbindung zu mehreren Verzeichnissen herzustellen, die mit verschiedenen Betriebssystemen kompatibel sind.
Dynamisch Pfade erhalten und anhängen über get_include_path, um zu vermeiden, dass das System Standardpfad überschreiben kann.
Das Kombinieren von spl_autoload_register kann die automatische Ladedatei erheblich vereinfachen.
Es wird empfohlen, relative Pfade und Verzeichnisarrays zu verwenden, um die Management- und Projektmigration zu erleichtern.
Durch flexible Verwendung von set_include_path ist Ihre PHP -Projektdatei löschter und effizienter und verbessert die Code -Wartung.