Extend of parameter voor class?
Ik heb een classe, Controller genaamd, welke in 2 situaties gespawned wordt:
- In het geval dat er via een browser de applicatie bezocht word
- In het geval dat de cronjob (ja die is echt nodig) die nodig heeft.
Nou moet de controller in de twee gevallen net ietsje anders constructen.
Vandaar dus mijn vraag. Wat is de netste OOP manier in jullie ogen? Graag met argumentatie ;-)
Zelf twijfel ik tussen:
Het extenden van de Controller classe om vervolgens voor de 2 situatie een andere class hebben, die dan weer parent::__construct doen, en daarna hun eigen net iets andere situatie doen.
Of:
Een if/else'je in de constructor, en een parameter in de constructor waarin wordt aangegeven hoe deze gespawned wordt...
Het is beide niet veel werk natuurlijk, en maakt in mijn ogen niet erg uit, maar ik vind het een boeiende vraag en zou jullie welles willen horen =)
Groetjes
Ik zou voor beide methodes een ander object gebruiken, en bij het aanroepen een van beide aanroepen. Je extend idee dus. (Al zou ik al nooit een controller rechtstreeks laten benaderen zonder tussenstappen)
If-elsje is makkelijker, en doet me meer denken aan #ifdef preprocessor syntax in bijv. C++. Argument hier tegen is vooral dat je class afhankelijk maakt van een globale variabele of functie van buitenaf (eentje die aangeeft wat de situatie is) maar het gaat al om een vrij specifieke controller die je waarschijnlijk alleen maar in dit project gebruikt, dus afhankelijkheid als tegenargument zou ik wegwuiven.
Jelmer rrrr op 20/07/2010 16:36:52:
Ik zou de eerste het netst vinden denk ik, omdat je dan je algemene specifieke controller weer scheidt van je specifieke specifieke controller die specifiek voor die specifieke situatie is, wat vrij specifiek is.
If-elsje is makkelijker, en doet me meer denken aan #ifdef preprocessor syntax in bijv. C++. Argument hier tegen is vooral dat je class afhankelijk maakt van een globale variabele of functie van buitenaf (eentje die aangeeft wat de situatie is) maar het gaat al om een vrij specifieke controller die je waarschijnlijk alleen maar in dit project gebruikt, dus afhankelijkheid als tegenargument zou ik wegwuiven.
If-elsje is makkelijker, en doet me meer denken aan #ifdef preprocessor syntax in bijv. C++. Argument hier tegen is vooral dat je class afhankelijk maakt van een globale variabele of functie van buitenaf (eentje die aangeeft wat de situatie is) maar het gaat al om een vrij specifieke controller die je waarschijnlijk alleen maar in dit project gebruikt, dus afhankelijkheid als tegenargument zou ik wegwuiven.
Klinkt logisch. Ik denk dat ik dan dus inderdaad de controller classe ga extenden voor die situatie.
Mijn visie is wel: het is inderdaad een specifieke toepassing, dus herbruikbaarheid is niet relevant. Toch wil ik ook specifieke code erg duidelijk en gestructureerd houden. Als het nou om een classe Item ging, die een CD en DVD was had ik meteen al een extend gedaan. Een CD en een DVD extend. Maar in dit geval gaat het om 1 enkel ander gedrag.
Mijn argument voor extend is dat de "normale" controller geen baat heeft bij extra dingen, en de cronjob controller wel. Dus is het "vies" om die code te hebben in een situatie waarbij je die niet gebruikt.
Bedankt, Jelmer!