SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
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 ZendDb 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 ?
        • 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
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

Contenu connexe

Tendances

Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...Xavier Lacot
 
ASP.NET MVC 6
ASP.NET MVC 6ASP.NET MVC 6
ASP.NET MVC 6Microsoft
 
Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Yves-Emmanuel Jutard
 
Intégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIHugo Hamon
 
Introduction à Angularjs
Introduction à AngularjsIntroduction à Angularjs
Introduction à AngularjsRossi Oddet
 
MVVM par Karim PIerre Maalej
MVVM par Karim PIerre MaalejMVVM par Karim PIerre Maalej
MVVM par Karim PIerre MaalejCocoaHeads France
 
ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSRenaud Dumont
 
Adopter les web components avec stencil.js - Front Side
Adopter les web components avec stencil.js - Front SideAdopter les web components avec stencil.js - Front Side
Adopter les web components avec stencil.js - Front SideThomas Champion
 
ASP.NET from Zero to Hero
ASP.NET from Zero to HeroASP.NET from Zero to Hero
ASP.NET from Zero to HeroCellenza
 
Mieux Développer en PHP avec Symfony
Mieux Développer en PHP avec SymfonyMieux Développer en PHP avec Symfony
Mieux Développer en PHP avec SymfonyHugo Hamon
 
Une application en deux heure - PHP Québec Janvier 2009
Une application en deux heure - PHP Québec Janvier 2009Une application en deux heure - PHP Québec Janvier 2009
Une application en deux heure - PHP Québec Janvier 2009Philippe Gamache
 
ASP.NET 5: la révolution est en marche
ASP.NET 5: la révolution est en marcheASP.NET 5: la révolution est en marche
ASP.NET 5: la révolution est en marcheMicrosoft
 
2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.jsTelecomValley
 
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIsPetit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIsOCTO Technology
 

Tendances (20)

Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
 
Introduction à Node.js
Introduction à Node.js Introduction à Node.js
Introduction à Node.js
 
ASP.NET MVC 6
ASP.NET MVC 6ASP.NET MVC 6
ASP.NET MVC 6
 
Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014
 
Intégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CI
 
Introduction à Angularjs
Introduction à AngularjsIntroduction à Angularjs
Introduction à Angularjs
 
MVVM par Karim PIerre Maalej
MVVM par Karim PIerre MaalejMVVM par Karim PIerre Maalej
MVVM par Karim PIerre Maalej
 
Initiation à ASP.NET 4.0
Initiation à ASP.NET 4.0Initiation à ASP.NET 4.0
Initiation à ASP.NET 4.0
 
Symfony Best Practices
Symfony Best PracticesSymfony Best Practices
Symfony Best Practices
 
Cakephp
CakephpCakephp
Cakephp
 
ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJS
 
Adopter les web components avec stencil.js - Front Side
Adopter les web components avec stencil.js - Front SideAdopter les web components avec stencil.js - Front Side
Adopter les web components avec stencil.js - Front Side
 
Les framework mvc
Les framework mvcLes framework mvc
Les framework mvc
 
ASP.NET from Zero to Hero
ASP.NET from Zero to HeroASP.NET from Zero to Hero
ASP.NET from Zero to Hero
 
Mieux Développer en PHP avec Symfony
Mieux Développer en PHP avec SymfonyMieux Développer en PHP avec Symfony
Mieux Développer en PHP avec Symfony
 
Une application en deux heure - PHP Québec Janvier 2009
Une application en deux heure - PHP Québec Janvier 2009Une application en deux heure - PHP Québec Janvier 2009
Une application en deux heure - PHP Québec Janvier 2009
 
ASP.NET 5: la révolution est en marche
ASP.NET 5: la révolution est en marcheASP.NET 5: la révolution est en marche
ASP.NET 5: la révolution est en marche
 
2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js
 
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIsPetit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
 
Introduction à ASP.NET
Introduction à ASP.NETIntroduction à ASP.NET
Introduction à ASP.NET
 

Similaire à Zend Framework 2.0 - Le gestionnaire de modules

Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesNoel GUILBERT
 
Drupal et le NoSQL - drupagora 2011
Drupal et le NoSQL - drupagora 2011Drupal et le NoSQL - drupagora 2011
Drupal et le NoSQL - drupagora 2011OSInet
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Alexandre Marie
 
S35 developper en node.js versus php
S35   developper en node.js versus phpS35   developper en node.js versus php
S35 developper en node.js versus phpGautier DUMAS
 
Toutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDBToutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDBContent Square
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System SARL
 
01 presentation MkFramework AFUP janv 2017
01 presentation MkFramework AFUP janv 201701 presentation MkFramework AFUP janv 2017
01 presentation MkFramework AFUP janv 2017Michael Bertocchi
 
Drupagora - Les clés de la réussite d'un projet Drupal
Drupagora - Les clés de la réussite d'un projet DrupalDrupagora - Les clés de la réussite d'un projet Drupal
Drupagora - Les clés de la réussite d'un projet DrupalCore-Techs
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfboulonvert
 
Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Microsoft
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System SARL
 
Configurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdfConfigurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdfHamida Rebai Trabelsi
 
Afterworks @Nouméa - DevOps, approche par container et Docker
Afterworks @Nouméa - DevOps, approche par container et DockerAfterworks @Nouméa - DevOps, approche par container et Docker
Afterworks @Nouméa - DevOps, approche par container et DockerJulien Chable
 
la boite à outils de développements dans firefox devtools
la boite à outils de développements dans firefox devtoolsla boite à outils de développements dans firefox devtools
la boite à outils de développements dans firefox devtoolsChristophe Villeneuve
 
Responsible Design ou Le web moderne à destination de tous
Responsible Design ou Le web moderne à destination de tousResponsible Design ou Le web moderne à destination de tous
Responsible Design ou Le web moderne à destination de tousjwajsberg
 
Architecture des types de contenu : ce qui a changé en Drupal 7
Architecture des types de contenu : ce qui a changé en Drupal 7Architecture des types de contenu : ce qui a changé en Drupal 7
Architecture des types de contenu : ce qui a changé en Drupal 7slybud
 

Similaire à Zend Framework 2.0 - Le gestionnaire de modules (20)

Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiques
 
Etude des Frameworks PHP
Etude des Frameworks PHPEtude des Frameworks PHP
Etude des Frameworks PHP
 
Drupal et le NoSQL - drupagora 2011
Drupal et le NoSQL - drupagora 2011Drupal et le NoSQL - drupagora 2011
Drupal et le NoSQL - drupagora 2011
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)
 
S35 developper en node.js versus php
S35   developper en node.js versus phpS35   developper en node.js versus php
S35 developper en node.js versus php
 
Toutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDBToutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDB
 
Infrastructure as code drupal
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupal
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stack
 
01 presentation MkFramework AFUP janv 2017
01 presentation MkFramework AFUP janv 201701 presentation MkFramework AFUP janv 2017
01 presentation MkFramework AFUP janv 2017
 
What is Docker
What is Docker What is Docker
What is Docker
 
Drupagora - Les clés de la réussite d'un projet Drupal
Drupagora - Les clés de la réussite d'un projet DrupalDrupagora - Les clés de la réussite d'un projet Drupal
Drupagora - Les clés de la réussite d'un projet Drupal
 
Introduction webextensions
Introduction webextensionsIntroduction webextensions
Introduction webextensions
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
 
Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stack
 
Configurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdfConfigurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdf
 
Afterworks @Nouméa - DevOps, approche par container et Docker
Afterworks @Nouméa - DevOps, approche par container et DockerAfterworks @Nouméa - DevOps, approche par container et Docker
Afterworks @Nouméa - DevOps, approche par container et Docker
 
la boite à outils de développements dans firefox devtools
la boite à outils de développements dans firefox devtoolsla boite à outils de développements dans firefox devtools
la boite à outils de développements dans firefox devtools
 
Responsible Design ou Le web moderne à destination de tous
Responsible Design ou Le web moderne à destination de tousResponsible Design ou Le web moderne à destination de tous
Responsible Design ou Le web moderne à destination de tous
 
Architecture des types de contenu : ce qui a changé en Drupal 7
Architecture des types de contenu : ce qui a changé en Drupal 7Architecture des types de contenu : ce qui a changé en Drupal 7
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
  • 8. Les modules dans l’application 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
  • 14. Un vrai module 2/3 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