Archief - php en OO

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

wdelements

Legacy Member
Ik heb een vraagje ivm het correct gebruik van OO in PHP.
Omdat ik voornamelijk in Java programmeer is het logisch dat ik volgens het volgend principe werk:

Bijvoorbeeld:
Huis h = new Huis();
h = DataHuis.getHuis(125);

Nu ben ik al een tijdje in php bezig en het valt me op dat het daar minder strikt zit, dus als ik gewoon zeg

$h = DataHuis.getHuis(125);
echo $h->kleur //geeft bijvoorbeeld rood

Nu kwam ik overlaatst een script tegen waar men ook eerst deed

$huis = new Huis();
en dan
$h = DataHuis.getHuis(125);
echo $h->kleur //geeft bijvoorbeeld rood

Nu lijkt mij die declaratie in PHP overbodig omdat het zonder ook werkt, ben ik juist hierin? Ik zou namelijk zeker willen weten dat ik op een propere manier werk? (gezien je in php geen vars hoeft te declareren lijkt het mij van wel?)

wonko

Legacy Member
Wat je hier ziet heeft niets met OO te maken, maar eerder met het feit dat PHP niet "typed" is (of Duck-typed). Een variabele kan "eender wat" zijn, en op het moment dat er iets aan toegekend wordt, wordt het type ook gezet.

In je laatste voorbeeld hierboven is die "$h = new Huis();" zelfs slecht, want het gaat een object maken, en dit meteen terug weggooien en vervangen door de waarde van je DataHuis->getHuis() factory. Nutteloos: memory en cpu-cycles (en programmeur-keystrokes) verspild.

(Trouwens, in je java-voorbeeld is de "new Huis()" ook nutteloos, het enige wat telt is "Huis h", die zegt dat de variabele h vanaf nu enkel huizen kan bevatten.)

wdelements

Legacy Member
wonko zei:
Wat je hier ziet heeft niets met OO te maken, maar eerder met het feit dat PHP niet "typed" is (of Duck-typed). Een variabele kan "eender wat" zijn, en op het moment dat er iets aan toegekend wordt, wordt het type ook gezet.

In je laatste voorbeeld hierboven is die "$h = new Huis();" zelfs slecht, want het gaat een object maken, en dit meteen terug weggooien en vervangen door de waarde van je DataHuis->getHuis() factory. Nutteloos: memory en cpu-cycles (en programmeur-keystrokes) verspild.

(Trouwens, in je java-voorbeeld is de "new Huis()" ook nutteloos, het enige wat telt is "Huis h", die zegt dat de variabele h vanaf nu enkel huizen kan bevatten.)

dat moest ik weten, bedankt.
new Huis() is idd in Java ook overbodig als je er direct een waarde aan toekent, had ik moeten weten.

in ieder geval bedankt.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan