developer.jelix.org is not used any more and exists only for history. Post new tickets on the Github account.
developer.jelix.org n'est plus utilisée, et existe uniquement pour son historique. Postez les nouveaux tickets sur le compte github.

Changes between Version 1 and Version 2 of fr/drafts/ioc


Ignore:
Timestamp:
Dec 14, 2008, 10:21:18 PM (12 years ago)
Author:
doubleface
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • fr/drafts/ioc

    v1 v2  
    55== Introduction ==
    66
    7 Cette implémentation (très partielle) de l'inversion de contrôle est très inspirée de celle de [http://www.stubbles.net/wiki/Docs/IOC Stubbles] qui est très intéressante à regarder en introduction à ce document. J'ai tenté d'adapter cette implémentation à Jelix mais en supprimant beaucoup de choses comme l'utilisation des annotations ou de la réflexion afin de garder de bonnes performances et aussi en mettant au centre de cette implémentation les sélecteurs de Jelix. De plus, il n'y a pour le moment pas de gestion des paramètre du constructeur.
     7Cette implémentation (très partielle) de l'inversion de contrôle est très inspirée de celle de [http://www.stubbles.net/wiki/Docs/IOC Stubbles] qui est très intéressante à regarder en introduction à ce document. J'ai tenté d'adapter cette implémentation à Jelix mais en supprimant beaucoup de choses comme l'utilisation des annotations ou de la réflexion afin de garder de bonnes performances et aussi en mettant au centre de cette implémentation les sélecteurs de Jelix. De plus, il n'y a pour le moment pas de gestion des paramètres du constructeur.
    88
    99== Utilisation ==
     
    4343}}}
    4444
    45 Si on essaye d'instancer la liaison d'une classe et que celle-ci n'en a pas, sa propre implémentation sera utilisée :
     45Si on essaye d'instancier la liaison d'une classe et que celle-ci n'en a pas, sa propre implémentation sera utilisée :
    4646{{{
    4747jClasses::getBindedService('module~classWithoutBinding'); // retourne une instance de classWithoutBinding
     48}}}
     49
     50Il est aussi possible de lier directement une classe ou une interface à une instance. C'est très pratique en particulier encore pour les test unitaire en utilisant ceci conjointement avec les [http://www.phpunit.de/manual/3.3/en/test-doubles.html#test-doubles.mock-objects Mock Objects] :
     51{{{
     52// Suppose we are in a PHPUnit test
     53$CalledMock = $this->getMock('Called');                        // We create a mock object from the called object
     54jClasses::bind('module~CalledItf')->toInstance($CalledMock);
     55Caller->methodToTest();
    4856}}}
    4957