Ola,

In een ander topic zegt Wouter op een gegeven moment:

Wouter J op 02/03/2014 16:08:06

allereerst zou ik geen setters gebruiken voor id en value. Dat zijn verplichte waarden, geef die dus mee aan de constructor en nog mooier: gebruik een factory: Session::create('user', 'Ozzie')

Waarom zou je een factory gebruiken ipv een constructor?

Waarom...

<?php
$session = Session::create('user', 'Ozzie');
?>
en niet...

<?php
$session = new Session('user', 'Ozzie');
?>
Wat is het verschil/voordeel?
Dos, dankjewel voor je voorbeeld.

Ik probeer je te volgens. Maar wat nu als ik dan heel simpel tegen jou zeg dat jij nu de create method van de nieuwe class wijzigt, en dat ik dus ook zou kunnen vragen waarom je de constructor van de nieuwe class niet wijzigt? Dat zou dan toch ook kunnen? Met hetgeen wat jij hier laadt zien, zeg je in feite... door een create method te gebruiken waarborg je backwards compatibility (als ik het veerkeerd zie moet je het zeggen). Dan zou je toch ook de constructor kunnen aanpassen waarbij je backwards compatibility garandeert?
"de create method van de nieuwe class wijzigt"
Dan kan ik zeggen dat je of een leugenaar bent, of dat je waarschijnlijk de create methode en de constructor door elkaar haalt, of dat je eerst A zegt, daarna B en daarna weer A, wat erg vervarrend is. (Dit is A)

"door een create method te gebruiken waarborg je backwards compatibility"
Dat is wat wouter zei (voor zover ik het begreep) en hier laat zie ja. (Dit is B)

"Dan zou je toch ook de constructor kunnen aanpassen waarbij je backwards compatibility garandeert?"
Ik heb de constructor gewijzigd, maar niet het gebruik er van, waardoor en een backwards compatibility break is geïntroduceerd. (Dit is weer A)
Een leugenaar ben ik absoluut niet Dos. Ik heb de code terug gekeken en zie dat ik me heb vergist. Met jouw toelichting snap ik je code ook beter.

Ik snap alleen nog niet wanneer je precies gebruik moet maken van een factory. Ik weet niet of ik over een jaar iets wil wijzigen een de constructor van een class. Hoe weet ik dan of ik een factory moet gebruiken?
"Ik weet niet of ik over een jaar iets wil wijzigen een de constructor van een class. Hoe weet ik dan of ik een factory moet gebruiken?"
Ik weet het ook niet precies. Probeer het een aantal keer, bepaal achteraf of het handig was of niet en zoek uit waarom het voor die bepaalde situaties wel handig was. Trial and error is een goede manier om dingen te leren. Test dummy zijn is een respectabel beroep :p

[offtopic]
"Een leugenaar ben ik absoluut niet Dos."
Jij bracht een theoretische vraag op. Ik dacht "laat ik daar leuk op in gaan en verschillende (3) theoretische antwoorden opnoemen." Communiceren via tekst is moeilijk...
[/offtopic]
>> Test dummy zijn is een respectabel beroep

Hehe... lol. Nja, ik snap wat je bedoelt, maar ik vind het ook niet zinvol om nu dingen te gaan bouwen omdat ze misschien over een jaar veranderen (tenzij die kans zeer aannemelijk is, dan is het een ander verhaal natuurlijk).

[offtopic]
Ah, oke ;)
Volgende keer niet meer doen hoor. Komt nou niet echt aardig over :)
[/offtopic]

Reageren