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!

Alvast bedankt!
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).
Ben van Velzen op 20/07/2017 21:17:09

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?

Bedankt weer!
Nee, maar je hebt een object, dus je zegt $obj->getid.
Ben van Velzen op 20/07/2017 21:31:18

Nee, maar je hebt een object, dus je zegt $obj->getid.


Mijn idee was om het binnen de class op te vragen .
In de constructor bijvoorbeeld.

Maar binnen de subclass heb ik toch geen object van de hoofdclass?

Sorry misschien was ik een beetje onduidelijk.
Wel als je die doorgeeft uiteraard. Dit zou je in de appendNewSubObject methode kunnen implementeren, icm een setter in de subclass.
Ben van Velzen op 20/07/2017 21:58:59

Wel als je die doorgeeft uiteraard. Dit zou je in de appendNewSubObject methode kunnen implementeren, icm een setter in de subclass.


Hi Ben ,

Dank voor je reacties.
Ik begrijp nu dat dat manier is.
Doe ik het zo!

Ik had iets in gedachten wat niet bestaat.

Dankjewel!
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 :)

Reageren