De uiteindelijke bedoeling is dat er 1 datamodel class komt die huis-tuin en keuken database-mutaties doorvoert.
stel class A is Datamodel en class B is b.v. menuitem
dan heeft class menuitem een variabel $tabel en $pri_key.
Vervolgens wil ik een publieke getAll() functie kunnen aanroepen in de datamodel class.
Dus als menuitem non-generieke query's nodig heeft defineer ik in class Menuitem
public function getAll(){
# doe specifieke. dingen geef terug
}
MAar als het een normale alles ophaal actie is, laat ik de functie achterwege en doe ik alsnog $items = Menuitem::getAll();
Deze wordt vervolgens aangeroepen in de Datamodel class.
maar die getAll() functie in de Datamodel class heeft wel de properties tabel en pri_key nodig van de class Menuitem;
Grt,
-----------------------------------------------------
even een edit om het weer onder de aandacht te brengen;
-----------------------------------------------------
de vraag is dus netto;
als ik B:getAll(); uitvoer, hoe kan ik dan in class A de property "iets" aanspreken
Het betreft hier een statische aanroep op de class B, als we dus iets toekennen aan B met b.v. magic method __set kunnen we helaas niet de child-class aanspreken of interne waarden van B aanspreken.
Vanaf PHP 5.3.0 kunnen we gebruik maken van Late static bindings -wat de oplossing zou bieden- echter kan ik geen debian package vinden hiervoor. (of de package is van een obscure website)
Helaas vind ik eerst een instance maken -zoals je zelf aangeeft- een workarround en geen oplossing. Het zou mij ook vreselijk veel tijd kosten om dit allemaal aan te passen. Daarnaast zou de opzet juist rapid core development moeten realiseren.