In meinem Framework (irgendwie gefällt mir der Name nicht mehr) hab ich folgenden Aufbau:
Alles läuft über Module. Und ganz am Anfang werden über einen Loader sämtliche Module geladen.
Dabei geht der Loader wie folgt vor:
- geh in den Order modules/default/
- für jeden Ordner : include Datei (was die class darstellt) welche genauso heißt wie der Ordner
- wenn class *name* eine Methode onload() besitzt : ausführen
- include alle zusätzlichen Dateien aus diesem Ordner
Heißt also, dass alle Module in einem eigenen Order liegen, so wie alle zugehörigen Dateien.
Die Datei, die genauso wie der Ordner heißt, ist die "Hauptklasse".
Zusätzliche Dateien sind auch meist Klassen wie zB UserController ect.
Bsp:
User - ist die "Hauptklasse"
UserControllerMain - steuert den Grundablauf des Users (login ect)
UserControllerForgotPassword - steuert speziell den Ablauf der Forgot-Password-Function
Das Problem:
^damit will PHP via autoload die Klasse UserControllerMain laden was ja richtig ist,
aber meine func in der autoload ist nicht dafür ausgelegt:
spl_autoload_register(
function($class){
(include_once PATH_INC_MODULES_DEFAULT.$class.'/'.$class.'.php')
or
(include_once PATH_INC_MODULES_OTHERS.$class.'/'.$class.'.php');
}
);
ZitatWarning: include_once(includes/modules/default/UserControllerMain/UserControllerMain.php): failed to open stream: No such file or directory in C:\xampp\htdocs...
Die eigtliche Datei liegt in:
Zitatincludes/modules/default/User/UserControllerMain.php
class User wird also als erstes geladen.
class UserControllerForgotPassword VOR UserControllerMain, wegen der Sortierung (UserControllerF* vor UserControllerM*)
Jetzt könnte ich die UserControllerMain in UserController_Main umbenennen, aber das ist dämlich
Und ich dachte eigtl, dass ich wiedermal beim schreiben dieses Posts schon selbst drauf komme,
aber ... nö -.-
brauch also mal nen Schubser =)