Ik werk met Zend Framework 2.

Vanaf versie 3, gaan de "ServiceLocatorAwareInterface" & "ServiceLocatorAwareInitializer" eruit en dien je je dependencies op te lossen via en factory.

Is er een duidelijke regel wat je zou moeten doen qua DI? In ZF2 draait alles om de servicelocator, maar het lijkt me niet de bedoeling om deze te injecteren. De reden dat het eruit is gehaald in v3, is dat het het doel van DI een beetje voorbij schiet omdat je via deze servicelocator alles binnenhaalt.

Als ik een object heb met 20 functies, welke in totaal 6 a 8 dependencies nodig hebben, ga ik deze dan allemaal via de constructor meegeven? Heb ik teveel verantwoordelijkheden binnen 1 object waardoor er teveel dependencies zijn? Dit laatste kan ik mij niet goed voorstellen.

Wat is jullie mening mbt DI? En als jullie voorbeelden hebben binnen ZF2 zou dat mij erg helpen.
Service Locator is een anti-pattern. De container is een object waar niemand van af mag weten. Je hele applicatie moet kunnen werken zonder de container en geen enkele class moet dus "container aware" (aka Service Locator) zijn.

Zowel 20 methods als 8 dependencies voor 1 object zijn inderdaad een hint dat de class teveel verantwoordelijkheden heeft. Hoewel er uitzonderingen zijn, wordt er vaak een standaard van max 4-5 dependencies aangehouden.
Dit is inderdaad het antwoord wat ik zelf ook had bedacht.

Haha, wat betreft de dependencies, ik gaf een voorbeeld waarbij ik zo'n reactie wilde uitlokken! Ook hier verschillen wij dus niet in van mening.

Bedankt voor je reactie en ik kan hier wel wat mee :) Zal het verder communiceren binnen het team!
Erik Rijk op 08/03/2016 10:52:56

Als ik een object heb met 20 functies, welke in totaal 6 a 8 dependencies nodig hebben, ga ik deze dan allemaal via de constructor meegeven?

De eerste vraag is dan: gelden die dependencies voor het gehele object of slechts voor bepaalde methoden? Meestal het laatste, omdat je afhankelijkheden liefst zo klein mogelijk wilt houden voor loose coupling en de inversion of control.
Erik Rijk op 08/03/2016 10:52:56

Heb ik teveel verantwoordelijkheden binnen 1 object waardoor er teveel dependencies zijn? Dit laatste kan ik mij niet goed voorstellen.

Ja, waarschijnlijk wel. Als je 20 methoden en 8 dependencies hebt, kun je meestal wel verantwoordelijkheden afsplitsen.
Hi Ward van der Put,

Er zijn dependencies die inderdaad slechts over bepaalde methoden gaan. Ik ga aan de slag dit om te gooien.
loose coupling en de inversion of control ga ik meer over lezen! Bedankt voor je reacte.

Reageren