PHP autoload und Namespaces
Seit der Version 5.3 unterstützt PHP nun ja auch Namespaces, was eigentlich auch eine gute Sache ist. Immerhin kann man so auf wilde Präfixe vor seinen Klassennamen verzichten. Allerdings machen Namespaces das Autoloading wesentlich unangenehmer. Insbesondere wenn man sowohl Klassen ohne namespaces als auch solche mit namespaces unterstützen muss oder will.
Ich habe den Autoloader aus dem Kristall Tutorial so erweitert, dass er auch mit namespaces umgehen kann. Grundvoraussetzung ist weiterhin, dass Dateiname und Klassenname übereinstimmen – also genau wie vorher auch. Allerdings muss der verwendete Namespace mit einem der Übergebenen Startverzeichnisse übereinstimmen.
Beispiele sind, für mich jedenfalls, immer irgendwie aussagekräftiger als allgemeine Erklärungen, daher ein Beispiel:
Bootstrap-Datei und Autoloader liegen im Basisverzeichnis ‘/var/www/meinePHPAnwendung/bootstrap.php‘
// /var/www/meinePHPAnwendung/bootstrap.php require 'Autoload.php'; Autoload::init(array(__DIR__));
Dann haben wir eine Klasse ‘Base‘ mit dem Namespace ‘MyApp\Classes‘ woraus intern dann die Klasse ‘MyApp\Classes\Base‘ wird. Um den Autoloader einsetzen zu können, muss diese Klasse im Verzeichnis ‘/var/www/meinePHPAnwendung/MyApp/Classes‘ liegen und den Dateinamen ‘Base.php‘ haben. Ist das der Fall wird der Autoloader die Datei finden und per require laden können.
Den Autoloader könnt ihr euch hier herunterladen.







Danke für die Info! Und für den Download!
Interessanter Beitrag! Auch ein Dankeschön von mir. Gruß Martin
Hey, cool Danke für den Tipp! Probier ich gleich mal aus
Schönen Tag dir noch! Gruß Uwe