PHP-Funktion add_include_path()
30.03.2009 in: PHP, Trickkiste und Webdesign
Wenn man mit vielen PHP-Scripten arbeitet und sich zudem an das Motto »Eine Klasse – eine Datei« hält, dann muß man gut aufpassen, daß der PHP-Interpreter auch alle Verzeichnisse kennt, aus denen man per require()
, include()
, fopen()
, file()
, readfile()
und file_get_contents()
Inhalte nachlädt.
Dazu sieht der Interpreter in den Verzeichnissen nach, die in der Direktive include_path
angegeben wurden. Diese Werte kann man zur Laufzeit mit der Funktion set_include_path()
ergänzen.
Ich habe mir dazu vor Jahren eine kleine Funktion geschrieben, die verhindert daß ich Pfade doppelt setze oder gar den falschen Trenner benutze:
/**
* Ergänzt den include_path.
* @author Thomas Scholz <http://toscho.de>
* @param string $path neuer Pfad
*
* @return void
*/
function add_include_path($path)
{
/* Verzeichnis ohne / oder \ am Ende. */
$path = rtrim($path, '/\\
');
/* Aktuelle Pfade trennen. */
$inc = explode( PATH_SEPARATOR, get_include_path() );
if ( in_array($path, $inc) )
{ /* Schon drin. Nichts zu tun. */
return;
}
/* Neuen Pfad anhängen … */
$inc[] = $path;
/* … und setzen. */
set_include_path( implode(PATH_SEPARATOR, $inc) );
return;
}
In der Praxis kann das dann so aussehen:
add_include_path( dirname( realpath(__FILE__) ) );
Natürlich lohnt sich das nur bei komplexeren Anwendungen. Wenn man nur wenige Scripte verwaltet, genügt das Beispiel aus dem Handbuch:
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
Drei oder vier doppelte Einträge werden die Peformance nicht spürbar senken.