Ich experimentiere gerade mit PHP6 und bin an den Namespaces hängen gelieben, jedenfalls im Zusammenhang mit __autoload. Bisher habe ich das Laden (am Beispiel einer Bibliothek) gelöst, in dem ich alle Dateien mit den zugehörigen Pfaden aus dem Bibliotheksverzeichnis ausgelesen und gespeichert habe, da meine Klassenname - anders als Zend Framework und Co. - kein Abbild ihres Dateipfads darstellen.
Namespaces scheinen mir auf den ersten Blick allerdings eine nette Lösung zu bieten, die die ganze Sache simplifiziert. Eine entsprechende Verzeichnisstruktur vorausgesetzt, ließe sich von den Namespaces auf die Dateipfade der Klassen schließen.
Aus Http::Request würde nach einem simplen str_replace und strtolower http/request.php. Allerdings habe ich in dieser Richtung schon von Problematiken gelesen. Hat jemand von euch diesbezüglich schon Erfahrungen gemacht oder handhabt das auf eine ähnliche Weise?
Grüße
PHP-Code:
public static function load_library()
{
$loaded_library = array();
foreach (new RecursiveIteratorIterator(
new RecursiveDirectoryIterator(dirname(__FILE__))) as $file)
{
if (substr(strrchr($file->getFilename(), '.'), 1) == 'php')
{
$filepath = $file->getPathname();
require_once $filepath;
$loaded_library[end(get_declared_classes())] = $filepath;
}
}
return $loaded_library;
}
PHP-Code:
public static function __autoload($class_name)
{
$library = self::load_library();
if (isset($library[$class_name]))
{
require_once $library[$class_name];
return true;
}
return false;
}
Aus Http::Request würde nach einem simplen str_replace und strtolower http/request.php. Allerdings habe ich in dieser Richtung schon von Problematiken gelesen. Hat jemand von euch diesbezüglich schon Erfahrungen gemacht oder handhabt das auf eine ähnliche Weise?
Grüße
Kommentar