Objecten in andere objecten gebruiken
Hoe maak je dan bijvoorbeeld een gastenboek? Geef je een user-object mee als referentie via de constructor o.i.d.?
Dan doe je gewoon:
Code (php)
Dit zou moeten werken, als je het zo bedoeld.
Gewijzigd op 01/01/1970 01:00:00 door Steven Hack
Iets concreter voorbeeld:
ik wil een bericht maken in het gastenboek en ben ingelogd (als user zijnde). Stel dat ik ook nog eens admin ben en er dus knopjes moeten zijn als 'wijzig' of 'verwijder'.
In het gastenboek moet ik dus een gebruiksobject aanspreken met gebruikersdata en dit opvragen o.i.d.
Ik kan moeilijk de objectnaam gebruiken o.i.d. moet ik dan de gegevens meegeven via een constructor? En hoe zit dat als de rollen van een gebruiker op wil vragen die bijvoorbeeld zich in een instantie van de class userRoles bevinden?
De handigste manier lijkt me dus dat ik die gegevens aan de constructor meegeef, maar dan kan het dus voorkomen dat ik nogal wat informatie via de constructor meegeef en ik weet niet of dat wel handig is...
Wel kun je natuurlijk in je constructor de objecten uit je sessie controleren op aanwezigheid ofzo, maar een user object als parameter meegeven lijkt me onnodig.
- een object meegeven als argument in een methode van een andere klasse.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
- een object aanmaken binnen de klasse
Hetzelfde argument kan je tegen singleton & static methods gebruiken, en het is afhankelijk van hoeveel waarde je aan het hergebruiken van de losse klassen hecht hoe goed je dit argument vindt :)
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$hoofdklasse = new Hoofdclasse();
$hoofdklasse->setUser();
$gastenboek = new Gastenboek();
?>
$hoofdklasse = new Hoofdclasse();
$hoofdklasse->setUser();
$gastenboek = new Gastenboek();
?>
Binnen het gastenboekobject kun je dan je gebruiker oproepen met $hoofdklasse->gebruiker.
Beperking is wel dat de hoofdklasse moet bestaan als je het userobject wilt gebruiken.
Ik zie niet in waarom je alles in een hoofdklasse zou moeten steken.
In dit geval is het inderdaad niet persé nuttig. Maar in een groter systeem met meerdere klassen die het user-object nodig hebben is het misschien nuttig. Maar dat is nu dus juist even de vraag of dit wel slim is..
Saimen, waar jij het over hebt is in principe gewoon een register class, is in principe een veel voorkomende class. Ik gebruik hem zelf ook, maar is niet in alle gevallen ideaal. Wel handig voor het gebruik van settings over de hele site.
Ok, thx Yorian. Duidelijk antwoord. Is het ook slim om je database connectie in je registerclass op te slaan?
Ik heb ook mijn database connectie er in staan, die kan ik overal opvragen. Is in mijn ogen handig, het kan vast ook op een andere manier, maar deze werkt goed.