[DI] Service providers

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

- Raoul -

- Raoul -

14/01/2013 19:38:19
Quote Anchor link
Hoi,

Ik snap nu wel het principe van DI, maar nog niet echt de serviceproviders.
Nu dacht ik dat een serviceprovider dit is:

- Je hebt een router, en die wil je in je DI stoppen
- De router implements een ServiceProvider class die je verplicht om een register() method aan te maken.
- Je register method returnt een string als 'Framework\Router\Router'
- En als de router class aangeroepen word word de class geregistreerd in de DI met behulp van de register() method.

Nu heb ik toch een paar vraagjes:
- Moet je je services niet in een config bestand instellen ipv in de class zelf?
- En als ik dan toch via de class zelf ga werken, hoe zorg ik er voor dat die register() method aangeroepen word?
Moet ik dan bij iedere router call ->register() doen?

Iemand die dit kan ophelderen?

Raoul
 
PHP hulp

PHP hulp

28/11/2024 11:52:00
 
Wouter J

Wouter J

14/01/2013 19:50:03
Quote Anchor link
Een service providers is iets wat je kan gebruiken in een framework, maar je kan het ook via configuratie doen.

Om een voorbeeldje te geven:

In Symfony2 gebruik je configuratie om een service te registreren:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<services>
    <service id="router" class="Raoul\Framework\Routing\Router">
        <parameter id="url_matcher"/>
        <parameter id="routecollection"/>
    </service>
</services>

Nu heb je de 'router' service geregistreerd. Je ziet, er komt naast de parser voor het XML file en het omzetten van parser data naar een service, geen klasse aan te pas.

In Silex gebruiken ze service providers. Dit zijn klassen die een register method hebben die alle nodige services en parameters voor een bepaalde library instellen. Zo heb je bijv. een SecurityServiceProvider klasse die alle services aanmaakt voor de security (authentication manager, access manager, user checker, ect.)

Een ServiceProvider is dus geen method die wordt geimplementeerd in de service, maar eentje die een eigen klasse heeft en die meerdere services en parameters instelt.
Gewijzigd op 14/01/2013 19:50:50 door Wouter J
 
- Raoul -

- Raoul -

14/01/2013 19:57:33
Quote Anchor link
Maar hoe kan m'n framework dan herkennen dat een ServiceProvider class dan effectief bestaat?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.