[oop] constructor als "uitvoerder"?
Oké... ik ga er mee aan de slag. Thanks allemaal!
Ozzie, PHP is niet de enige OOP taal. En er zijn nogal wat zaken die in PHP wél werken maar in een striktere taal absoluut niet. En onderstaand voorbeeld is er één van:
In andere talen heb je hiervoor dus persé een constructor nodig, en daar is dat ding dus voor bedoeld.
Code (php)
In andere talen heb je hiervoor dus persé een constructor nodig, en daar is dat ding dus voor bedoeld.
>> Wanneer kies je voor een statische aanroep?
Wanneer je geen klasse hebt, maar een functie.
Wanneer je geen klasse hebt, maar een functie.
>> Wanneer je geen klasse hebt, maar een functie.
Een statische method is ook onderdeel van een class toch?
Een statische method is ook onderdeel van een class toch?
Een static function kan op zichzelf functioneren, net als een functie die je gewent bent in php. Verder zitten er regels aan vast en kan het dus niet geheel functioneren zoals je met andere functies in de class zou doen. Het is dus niet geheel onderdeel van de classe. Je kan dus niet direct gebruik maken van andere public classes. Dit geeft bijvoorbeeld een error omdat er een andere functie word aangeroepen uit dezelfde classe:
Code (php)
Gewijzigd op 19/05/2014 22:18:39 door phpnuke r
Uhm...eh... het kan handiger zijn, maar het gaat uiteindelijk om de functionaliteit :)
Enkel en alleen voor een statische method kiezen omdat dat handiger is voor je editor lijkt me ook niet helemaal juist...
Enkel en alleen voor een statische method kiezen omdat dat handiger is voor je editor lijkt me ook niet helemaal juist...
Gewijzigd op 19/05/2014 22:16:39 door Ozzie PHP
De functionaliteit blijft hetzelfde, het organiseren van je code en bovendien de leesbaarheid is erg belangrijk. Daar hoort code doorlopen ook bij ;)(Ik heb overigens mijn post veranderd omdat ik te lui was om de topic te doorlezen :P)
>> Ik heb overigens mijn post veranderd omdat ik te lui was om de topic te doorlezen :P
Lol... je hebt 'm flink aangepast ;)
Maar uiteindelijk gaat het dus om de situatie waarin je iets toepast.
Lol... je hebt 'm flink aangepast ;)
Maar uiteindelijk gaat het dus om de situatie waarin je iets toepast.
Quote:
Lol... je hebt 'm flink aangepast ;)
:)
Quote:
Maar uiteindelijk gaat het dus om de situatie waarin je iets toepast.
Als je object oriented programmeert wil je dat je code ook meer aan elkaar gelijk is. Als je normale functies en classes door me kaar gebruikt is gewoon incorrect.
Wanneer je kleine acties onderneemt, die je een functie het werkt zou laten doen, gebruik je een static. Wanneer je een 'object' wil maken welk op verschillende manieren kan worden gebruikt dan gebruik je een classe.
Gewijzigd op 19/05/2014 22:58:22 door phpnuke r
>> Wanneer je kleine acties onderneemt, die je een functie het werkt zou laten doen, gebruik je een static. Wanneer je een 'object' wil maken welk op verschillende manieren kan worden gebruikt dan gebruik je een classe.
Je gebruikt altijd een class hoor :) Ik denk dat je bedoelt dat wanneer je slechts 1 ding hoeft te doen, je een statische method zou kunnen gebruiken. Correct?
Je gebruikt altijd een class hoor :) Ik denk dat je bedoelt dat wanneer je slechts 1 ding hoeft te doen, je een statische method zou kunnen gebruiken. Correct?
Wanneer je een factory class hebt of een singleton. Dus zoals Wouter waarschijnlijk zou zeggen aangezien je de singleton toch niet gebruikt alleen voor een factory. ( oftewel wanneer je vanaf overal een instance wilt instantieren en wilt dat hij overal gelijk is )
@Reshad: en wat vind je dan van de oplossing van NOLot: http://www.phphulp.nl/php/forum/topic/oop-constructor-als-uitvoerder/94938/2/#681630
Dat vind ik zelf ook wel heel mooi. Het is hier meteen duidelijk wat je doet, en je kunt verder toch niks doen met het request object, behalve het aanroepen van de execute method.
Dat vind ik zelf ook wel heel mooi. Het is hier meteen duidelijk wat je doet, en je kunt verder toch niks doen met het request object, behalve het aanroepen van de execute method.
Gewijzigd op 20/05/2014 00:18:28 door Ozzie PHP
Quote:
Je gebruikt altijd een class hoor :) Ik denk dat je bedoelt dat wanneer je slechts 1 ding hoeft te doen, je een statische method zou kunnen gebruiken. Correct?
Dan ga je inderdaad geen complete classe schijven, en gebruik je een static. Met classe bedoel ik dan ook het verzamelwoord.
>> Dan ga je inderdaad geen complete classe schijven, en gebruik je een static. Met classe bedoel ik dan ook het verzamelwoord.
Wat bedoel je nu precies? Een static method is een onderdeel van een class? Ik begrijp niet helemaal wat je bedoelt...
Wat bedoel je nu precies? Een static method is een onderdeel van een class? Ik begrijp niet helemaal wat je bedoelt...
Een static is onderdeel van de class, maar niet van het object
Precies, maar er is dus altijd sprake van een class.
Quote:
Dan ga je inderdaad geen complete classe schijven, en gebruik je een static. Met classe bedoel ik dan ook het verzamelwoord.
>>
Quote:
Je gebruikt altijd een class hoor :) Ik denk dat je bedoelt dat wanneer je slechts 1 ding hoeft te doen, je een statische method zou kunnen gebruiken. Correct?
Klopt, Dan ga je inderdaad geen complete classe schijven, en gebruik je een static function. Met een classe bedoel ik dan ook het verzamelwoord (object).
Gewijzigd op 21/05/2014 21:36:46 door phpnuke r
>> Klopt, Dan ga je inderdaad geen complete classe schijven, en gebruik je een static function. Met een classe bedoel ik dan ook het verzamelwoord (object).
Euh... een object is dan net weer wat anders dan een class... :(
Een object is een instantie van een class.
Euh... een object is dan net weer wat anders dan een class... :(
Een object is een instantie van een class.




