Ik heb de volgende situatie waarin ik een propertie uit n andere class wil opvragen.
Ik heb geprobeerd $_id static te maken.
Dat werkt goed totdat je meerdere instanties van de hoofdclass hebt gemaakt.
Extend gebruiken leek mij niet de juiste wijze omdat subclass geen daadwerkelijke uitbreiding is op hoofdclass maar een onderdeel is van de hoofdclass.
Heeft iemand hier een oplossing voor?
Zie onderstaand:
(Niet de daadwerkelijke code maar ter illustratie)
Class HoofdClass {
Private $_id;
Private $_subObject;
Public function __construct(){
$this->_id = 3;
}
Public function appendNewSubObject($subObject){
$this->_subObject = $subObject;
}
}
Class SubClass {
//hier wil ik graag $_id van Hoofclass opvragen
}
$hoofdObject = new hoofdClass();
$subObject = new subClass();
$hoofdObject->appendNewSubObject($subObject);
Ik hoop dat mijn vraag zo duidelijk is.
Anders hoor ik graag!
Als je properties uit een andere class wil opvragen zul je hiervoor of accessor methoden moeten maken (aanbevolen) of de property public moeten maken (niet aan te bevelen).
Als je properties uit een andere class wil opvragen zul je hiervoor of accessor methoden moeten maken (aanbevolen) of de property public moeten maken (niet aan te bevelen).
Hi Ben,
Dank voor je reactie.
Ik heb inderdaad in de hoofdclass wel een getId method maar hoe roep ik die aan uit de andere class?
Parent:: kan niet want het is geen extend van.
Of ben ik verplicht dit via een method in de subclass toe te voegen middels een set?
Via reflection zou je misschien iets kunnen doen, of met een laag die je er omheen bouwt, zoals een dependency injection container. Anders zou ik het ook niet weten.
Naamgeving is ook niet echt logisch: SubClass extend HoofdClass niet, dus hoe is dit een SubClass?
Probleem ontstond oorspronkelijk ook omdat (instanties van) HoofdClass (instanties van) SubClass "kennen", maar niet andersom, en er is verder ook geen enkel verband tussen de twee. Het is in feite een enkel gelinkte lijst: de Parent kent de Children wel, maar de Children kennen de Parent niet. Een manier om te vertellen wie je pappie is is door een referentie mee te geven bij de creatie van een kind. Zodat je in wezen een dubbel gelinkte lijst hebt.
Dank voor je reactie.
Ik geef het id nu inderdaad gewoon mee via de constructor.
En daarmee is het opgelost.
Omdat ik relatief nieuw ben met objecten binnen php wil ik het mezelf goed aanleren.
Vandaar mijn vraag hier op het forum :)