Architecture des types de contenu : ce qui a changé en Drupal 7
Zend Framework 2.0 - Le gestionnaire de modules
1. Le gestionnaire de
modules
Webinar pour zend.com/fr, mercredi 17 octobre 2012
mardi 16 octobre 12
2. Vincent Blanchon ?
• Certifié PHP & Zend Framework
• Développeur Zend Framework chez Orange Portails
• Contributeur Zend Framework 2
• Tutoriel sur blanchon-vincent.developpez.com
• Auteur du livre « Au coeur de Zend Framework 2 »
http://au-coeur-de-zend-framework-2.fr
mardi 16 octobre 12
3. Qu’est ce qu’un module ?
• Ensemble de fonctionnalités réutilisables pour construire
une application. Ex : forum, livre d’or, facebook, analytics.
• Permet de séparer les différentes couches d’une application
• N’écrire le code qu’une seule fois ! Ou utiliser ce qui est
déjà fait.
mardi 16 octobre 12
4. Les modules avec le ZF1
• Difficile à réutiliser
• Beaucoup trop couplé avec la couche MVC
• Pas de mécanisme de distribution
• Pas de mécanisme de packaging
mardi 16 octobre 12
5. Les modules avec le ZF2
• Réutilisable, léger et configurable
• Hiérarchie modulable
• Distribution depuis le site modules.zendframework.com ou
via Composer
mardi 16 octobre 12
6. Quel genre de modules ?
• Tout et n’importe quoi !
- Module de paiement pour le e-commerce
- Intégration de moteur de templates
- Intégration de bibliothèque comme Doctrine2
- Gestion de la mémoire
- Mini application : forum, blog, etc.
mardi 16 octobre 12
7. Exemple avec ZfcUser
• Authentification et enregistrement
• Simple et extensible
• Intégration des règles de sécurité : jeton CSRF, Bcrypt, etc.
• Fonctionne avec ZendDb ou Doctrine/MongoDb
• Extensible : ScnSocialAuth, CdliUserProfile, etc.
mardi 16 octobre 12
10. Distribuer un module
• Composer
• Git
• Http
• Copier coller
mardi 16 octobre 12
11. Activer un module
• Ajouter le module à la configuration de l’application
mardi 16 octobre 12
12. Un peu de code !
<?php
namespace MyModule;
class Module {}
mardi 16 octobre 12
13. Un vrai module 1/3
Prenons un exemple avec un gestionnaire de mémoire
partagée. Ce module doit :
• écrire et lire dans différents types de stockage
• permettre de changer et de configurer à la volée les types
de stockage
• être simple d’utilisation et fiable
• interagir facilement avec d’autres modules
mardi 16 octobre 12
15. Un vrai module 3/3
La méthode « getServiceConfig() »permet de définir ses propres aides de vues :
mardi 16 octobre 12
16. Comment enrichir la classe ?
• ZendModuleManagerFeature fournit des interfaces
permettant d’interagir avec l’application
• Nativement, il est possible de :
- enrichir la configuration globale du framework (ConfigListener)
- enregistrer facilement ses aides de vues (ViewHelperProviderInterface)
- agir sur les évènements du framework (OnBootstrapListener)
- interagir avec le gestionnaire de modules (InitTrigger)
mardi 16 octobre 12
17. Utiliser la fabrique 1/2
La fabrique principale peut être récupérée depuis le gestionnaire de services :
mardi 16 octobre 12
18. Utiliser la fabrique 2/2
L’utilisation d’une aide d’action rend le code moins compact :
mardi 16 octobre 12
19. Le gestionnaire de modules
• Charge chacun des modules.
• Pour chacun des modules, il va appeler chacune des
méthodes implémentées et va enrichir la configuration.
• La configuration de l’application est fusionnée, enrichie par
les fichiers indiqués dans le fichier application.config.php
• Tout ce traitement peut être mis en cache !
mardi 16 octobre 12
20. Bonnes pratiques
• Utiliser un préfixe propre à l’éditeur du module : « MiklSeo
» et non « SeoModule »
• Le module doit faire une chose et le faire bien
• Le module embarque des tests unitaires
mardi 16 octobre 12
21. Approfondir le sujet
• Pourquoi se satisfaire d’un chargement complet
• Performances et sécurité
• Permet de mieux comprendre le chargement des modules
• https://github.com/blanchonvincent/zf2-lazy-loading-module
mardi 16 octobre 12
22. Liste de modules intéressants
• EdpSuperluminal : mis en cache de fichier ZF2 récurrent
• MiklSeo : automatise les titles/meta de votre application
• ModuleDefaultRouteListener : permet le routage module/
contrôler/action avec enregistrement auto des contrôleurs
• ZfcUser : gestion des utilisateurs
• ZFTU (zend-framework-test-phpunit)
mardi 16 octobre 12
23. Des questions ?
• Twitter : @blanchonvincent
• Web : http://developpeur-zend-framework.fr
• Github : https://github.com/blanchonvincent
• Tutoriels : http://blanchon-vincent.developpez.com
Présentation inspirée du webinar d’Evan Coury que je
remercie.
mardi 16 octobre 12