Nu snap ik het beter Stijn.
Ik heb ook net te horen gekregen dat mijn manier wat ranzig was, dus ik ga even een nieuwe structuur bedenken. Daar kan die __autoload goed van pas komen.
Je manier hoeft niet ranzig te zijn als je eens gaat werken met een singleton core class. Op die manier krijg je het resultaat wat je zelf wilt, blijft het overzichtelijk (kijk naar Zend FrameWork) en ben je goed bezig.
Autoload is leuk als je niet met een core class wilt werken.
Autoload is opzichzelf iets leuk maar ik toch heb ik liever zelf meer controle over wat er gebeurd.
Als je nu bv. twee mappen hebt waar je klassen in staan zal je al een prefix moeten meegeven in welke map de klasse zich bevindt.
Als je gewoon alle klassen inlaadt dan heb je dat probleem niet. Je zou zelfs (zoals het bij ZEND is als ik me niet vergis) op volgende manier tewerk kunnen gaan:
// ik zeg niet dat hetgeen hieronder per definitie werkt bij ZEND maar het idee is ongeveer hetzelfde
$db = Core::load("DataBase", $params); // of "Database", $param1, $param2, ...
// ik zeg niet dat hetgeen hieronder per definitie werkt bij ZEND maar het idee is ongeveer hetzelfde
$db= Core::load("DataBase",$params);// of "Database", $param1, $param2, ...
Dan kan je dus zien, bestaat de klasse?
==> instantciëren
Anders: opsoren. Het idee is hetzelfde en toch heb je iets meer controle. Je kan bv. dan een nieuwe parameter introduceren die dan het path voorstelt waar de klasse zich bevindt, of zoals ik bij NF heb gedaan:
$core = Core::getInstance();
$core->setDirectory("Nemesis");
$core->loadClass("ExceptionHandler");
$core->loadClass("OutputHandler");
// etc...
/* <-- horen niet bij Framework, horen bij applicatie */
$core->setDirectory("classes");
$core->loadClass("Gebruiker");
$core->loadClass("ClientInfo");
/* horen niet bij Framework, horen bij applicatie --> */
$core= Core::getInstance();
$core->setDirectory("Nemesis");
$core->loadClass("ExceptionHandler");
$core->loadClass("OutputHandler");
// etc...
/* <-- horen niet bij Framework, horen bij applicatie */
$core->setDirectory("classes");
$core->loadClass("Gebruiker");
$core->loadClass("ClientInfo");
/* horen niet bij Framework, horen bij applicatie --> */
Zo heb ik zelf het gevoel dat ik meer controle erover heb. En het is per klasse toch maar één lijntje toevoegen. Als je dan al een standaard load file hebt is dit geen probleem. Als je al zo verdwaald bent met het inladen van klassen dat je zoveel klassen hebt dan ben je IMO verkeerd bezig. Je moet ten allentijde overzicht hebben IMO.
Ontopic: als er mensen zijn die er anders over denken dan ik, gelieve dan te reageren (met wel een beetje deftige argumenten) want een mening kan altijd veranderen:)