Hallo,
über spl_autoload_register() kann man ja beliebig viele Autoloader registrieren - das wird oft als Vorteil für grosse Projekte hingestellt, für Plugins etc. Wie verhindert man dann, dass es zu Überschneidungen kommt?
Sehe ich mir das Beispiel hier an (Mulitple Autoloads):
http://www.phpro.org/tutorials/SPL-Autoload.html
wird die Klasse "norman" aus einem der beiden Verzeichnisse eingebunden. Das heisst, es darf die Klasse garnicht erst in beiden Verzeichnissen geben.
Hier wird das ja noch schlimmer (Autoloading in the “Olden Days”):
http://www.sitepoint.com/autoloading...sr-0-standard/
Entwickelt man sein Projekt für MVC hätte man ja immer die gleichen Namen - z.B. in jedem Verzeichnis eine Klasse "Database". Geht ja schonmal garnicht.
Teilt man das über den Namen ein (DatabaseController, DatabaseModel, DatabaseView) kann man sich aber auch gleich mehrere Autoloader sparen.
Ja und dann ist da noch PSR-0, schön und gut, dann müssen sich die Module aber auch daran halten. Guck ich da einfach mal in ein bekanntes Projekt rein
https://github.com/PHPMailer/PHPMail...erAutoload.php
ist davon aber so rein garnichts zu sehen.
Noch schlimmer wird es, wenn ich dann selber mal eine Datei class.foo.php nenne - da übernimmt der fremde Autoloader ja die Kontrolle.
In irgendeinem Thread hab ich gelesen (meine es war zu Joomla), der "System"-Autoloader sollte sogar zuletzt ausgeführt werden - dann bekommen doch die Module ggf. irgendwelche Klassen geliefert, die garnicht denen gehören, sondern zum ursprünglichen Projekt.
Also ich sehe bei mehreren Autoloadern viel Potential dafür, dass die sich in die Quere kommen.
Was meint ihr dazu? Wie ist das bei euch gelöst?
MfG
über spl_autoload_register() kann man ja beliebig viele Autoloader registrieren - das wird oft als Vorteil für grosse Projekte hingestellt, für Plugins etc. Wie verhindert man dann, dass es zu Überschneidungen kommt?
Sehe ich mir das Beispiel hier an (Mulitple Autoloads):
http://www.phpro.org/tutorials/SPL-Autoload.html
wird die Klasse "norman" aus einem der beiden Verzeichnisse eingebunden. Das heisst, es darf die Klasse garnicht erst in beiden Verzeichnissen geben.
Hier wird das ja noch schlimmer (Autoloading in the “Olden Days”):
http://www.sitepoint.com/autoloading...sr-0-standard/
Entwickelt man sein Projekt für MVC hätte man ja immer die gleichen Namen - z.B. in jedem Verzeichnis eine Klasse "Database". Geht ja schonmal garnicht.
Teilt man das über den Namen ein (DatabaseController, DatabaseModel, DatabaseView) kann man sich aber auch gleich mehrere Autoloader sparen.
Ja und dann ist da noch PSR-0, schön und gut, dann müssen sich die Module aber auch daran halten. Guck ich da einfach mal in ein bekanntes Projekt rein
https://github.com/PHPMailer/PHPMail...erAutoload.php
ist davon aber so rein garnichts zu sehen.
Noch schlimmer wird es, wenn ich dann selber mal eine Datei class.foo.php nenne - da übernimmt der fremde Autoloader ja die Kontrolle.
In irgendeinem Thread hab ich gelesen (meine es war zu Joomla), der "System"-Autoloader sollte sogar zuletzt ausgeführt werden - dann bekommen doch die Module ggf. irgendwelche Klassen geliefert, die garnicht denen gehören, sondern zum ursprünglichen Projekt.
Also ich sehe bei mehreren Autoloadern viel Potential dafür, dass die sich in die Quere kommen.
Was meint ihr dazu? Wie ist das bei euch gelöst?
MfG
Kommentar