zend framework 2.0 - le gestionnaire de modules
DESCRIPTION
Présentation du gestionnaire de modules du Zend Framework 2TRANSCRIPT
Le gestionnaire de modules
Webinar pour zend.com/fr, mercredi 17 octobre 2012
mardi 16 octobre 12
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
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
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
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
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
Exemple avec ZfcUser
• Authentification et enregistrement
• Simple et extensible
• Intégration des règles de sécurité : jeton CSRF, Bcrypt, etc.
• Fonctionne avec Zend\Db ou Doctrine/MongoDb
• Extensible : ScnSocialAuth, CdliUserProfile, etc.
mardi 16 octobre 12
Les modules dans l’application
mardi 16 octobre 12
Structure d’un module
mardi 16 octobre 12
Distribuer un module
• Composer
• Git
• Http
• Copier coller
mardi 16 octobre 12
Activer un module
• Ajouter le module à la configuration de l’application
mardi 16 octobre 12
Un peu de code !
<?php
namespace MyModule;
class Module {}
mardi 16 octobre 12
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
Un vrai module 2/3
mardi 16 octobre 12
Un vrai module 3/3
La méthode « getServiceConfig() »permet de définir ses propres aides de vues :
mardi 16 octobre 12
Comment enrichir la classe ?
• Zend\ModuleManager\Feature 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
Utiliser la fabrique 1/2
La fabrique principale peut être récupérée depuis le gestionnaire de services :
mardi 16 octobre 12
Utiliser la fabrique 2/2
L’utilisation d’une aide d’action rend le code moins compact :
mardi 16 octobre 12
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
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
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
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
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