Hallo Leute,
erstmal warum ich nicht registriert bin:
Zum Thema:
Ich hab schon so viele Autoload funktionen mit spl und auch so gesehen, jedoch war für mich nichts passendens dabei. Warum?
Weil jede Datei genauso heißen musste wie die Klasse. Und das wollte ich nicht.
Warum nicht? Ich will mich von der Masse abheben *muhahah*
Deswegen hab ich nach einer Lösung gesucht und folgenden Code benutzt:
Alles anzeigen
Was meine Probleme bei den anderen autoload klassen war?
- Wenn ich eine Subklasse zuerst included hab als die Vaterklasse, kamm ein Error, dass die Vaterklasse natürlich nicht eingebunden war
- Man musste immer eine Struktur mit den Dateinamen und der Klassennamen haben, was mich natürlich etwas einschrenkte
- Unterordner wurden nie mit einbezogen
Nun wollte ich fragen ob ihr verbesserungsvorschläge habt (bis auf Cache
der kommt noch natürlich ;))
und wie ihr die Funktion finden
Bin gespannt !!
Gruß Sysix
erstmal warum ich nicht registriert bin:
Thema gabs schon im Offtopic, leider hat es sich für mich noch nicht behoben.Der Zutritt zu dieser Seite ist Ihnen leider verwehrt. Sie besitzen
nicht die notwendigen Zugriffsrechte, um diese Seite aufrufen zu können.
Zum Thema:
Ich hab schon so viele Autoload funktionen mit spl und auch so gesehen, jedoch war für mich nichts passendens dabei. Warum?
Weil jede Datei genauso heißen musste wie die Klasse. Und das wollte ich nicht.
Warum nicht? Ich will mich von der Masse abheben *muhahah*

Deswegen hab ich nach einer Lösung gesucht und folgenden Code benutzt:
Quellcode
- // Globale Variablen
- $mainClasses = array();
- $subClasses = array();
- function selectClasses($dir) {
- // Globale Variablen einbezihene
- global $mainClasses;
- global $subClasses;
- // Ordner öffnen und Dateien in $files speichern
- $files = scandir($dir);
- // Jede Datei durchforten
- foreach($files as $file) {
- // Unzulässige Dateien
- if(in_array($file, array('.', '..'))) {
- continue;
- }
- // Ist Ordner? Wenn ja dann Function erneut aufrufen
- if(strpos($file, '.php') === false) {
- selectClasses($dir.'/'.$file);
- continue;
- }
- // Datei einlesen und die ersten 200 Zeichen schauen ob es eine Kindklasse ist oder nicht
- $section = file_get_contents($dir.'/'.$file, NULL, NULL, 0, 200);
- $section = preg_match('/class (\w+) extends (\w+)/', $section, $treffer);
- if(isset($treffer[1])) { # Ist Kindklasse
- $subClasses[] = $dir.'/'.$file;
- } else { # Ist Vaterklasse
- $mainClasses[] = $dir.'/'.$file;
- }
- }
- }
- // Funktion öffnen
- selectClasses('admin/lib/classes');
- // Hauptklasse einbinden
- foreach($mainClasses as $class) {
- require_once($class);
- }
- // Kindklassen einbinden
- foreach($subClasses as $class) {
- require_once($class);
- }
Was meine Probleme bei den anderen autoload klassen war?
- Wenn ich eine Subklasse zuerst included hab als die Vaterklasse, kamm ein Error, dass die Vaterklasse natürlich nicht eingebunden war
- Man musste immer eine Struktur mit den Dateinamen und der Klassennamen haben, was mich natürlich etwas einschrenkte
- Unterordner wurden nie mit einbezogen
Nun wollte ich fragen ob ihr verbesserungsvorschläge habt (bis auf Cache

und wie ihr die Funktion finden

Bin gespannt !!
Gruß Sysix