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.
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
- Timestamp:
- Dec 14, 2008, 10:21:18 PM (12 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
fr/drafts/ioc
v1 v2 5 5 == Introduction == 6 6 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.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ètres du constructeur. 8 8 9 9 == Utilisation == … … 43 43 }}} 44 44 45 Si on essaye d'instanc er la liaison d'une classe et que celle-ci n'en a pas, sa propre implémentation sera utilisée :45 Si on essaye d'instancier la liaison d'une classe et que celle-ci n'en a pas, sa propre implémentation sera utilisée : 46 46 {{{ 47 47 jClasses::getBindedService('module~classWithoutBinding'); // retourne une instance de classWithoutBinding 48 }}} 49 50 Il 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 54 jClasses::bind('module~CalledItf')->toInstance($CalledMock); 55 Caller->methodToTest(); 48 56 }}} 49 57