Include Path zur Laufzeit setzen
Heute gibt es mal wieder einen kurzen Beitrag, wie man in PHP “include Pathes” zur Laufzeit setzen oder entfernen kann. Das ganze erspart einem in größeren Projekten viel Arbeit, weil man bei der Verwendung von require und include nur noch den Dateinamen angeben muss. Ein weiterer Vorteil ist, dass man viel flexibler bezüglich seiner Verzeichnisstruktur wird. Muss diese aus irgendwelchen Gründen angepasst werden, müssen hierzu nur ein paar Zeilen Code in der entsprechenden PHP Datei geändert werden. Damit das ganze funtkioniert, muss das setzen der .ini Option ‘include_path’ natürlich ganz am Anfang der Bootsrap Datei passieren. Im folgenden ein kurzer Beispielcode der das ganze illustriert.
/** * bootstrap.php */ $rootpath = str_replace(DIRECTORY_SEPARATOR.'bootstrap.php','',__FILE__); define('ROOTPATH',$rootpath); $includePath = ini_get('include_path'); $includePath.= PATH_SEPARATOR.ROOTPATH.'\lib'; $includePath.= PATH_SEPARATOR.ROOTPATH.'\lib\yourProject'; $includePath.= PATH_SEPARATOR.ROOTPATH.'\lib\yourProject\interface'; ini_set('include_path', $includePath); function __autoload($className) { require_once '' . $className . '.php'; }
Mit der Funktion ini_get(String iniOption) wird der Wert der php.ini an der Stelle ‘include_path’ ausgelesen. Danach werden alle benötigten Pfade gesetzt (mit .= können Strings mit einer einfach Syntax erweitert werden, es ersetzt folgendes Konstrukt $var = $var.’neuerString’;). Um die neuen “include Pathes” zu setzen verwenden wir die Funktion ini_set(String iniOption, String neuerWert). Nun können im gesamten Skript requires und includes nur mit dem Dateinamen durchgeführt werden.
Implementiert man zusätzlich noch den __autoload Interzeptor muss man sich, zumindest was das Laden von Klassen angeht, um nichts mehr kümmern.
Natürlich können mit den beiden Funktionen, alle zur Laufzeit änderbaren, php.ini Einstellungen ausgelesen und gesetzt werden. Eine Übersicht welche Werte zur Laufzeit gesetzt werden können gibt es hier auf PHP Net.
Wenn dir dieser Beitrag gefällt, lade den Autor doch mal zu einem Drink ein ;-)Tags: inspiration, PHP, programmieren

Super Tipp! Danke!
Ist schon eine nette idee die man evtl verbessern kann z.b. so:
function ini_set_include_path(){
$rootpath = str_replace(DIRECTORY_SEPARATOR.’index.php’,”,__FILE__);
define(‘ROOTPATH’,$rootpath);
$includePath = ini_get(‘include_path’);
foreach(func_get_args() AS $PATH){ $includePath.= PATH_SEPARATOR.ROOTPATH.$PATH; }
ini_set(‘include_path’, $includePath);
}
ini_set_include_path(‘\lib’,'\blib’,'\clib’);
// __autoload(‘head’, ‘content’,'footer’);
p.s. eine interessante Seite hast du, weiter so