zend framework 2.0 - le gestionnaire de modules

23
Le gestionnaire de modules Webinar pour zend.com/fr, mercredi 17 octobre 2012 mardi 16 octobre 12

Upload: vincent-blanchon

Post on 22-Nov-2014

3.007 views

Category:

Documents


1 download

DESCRIPTION

Présentation du gestionnaire de modules du Zend Framework 2

TRANSCRIPT

Page 1: Zend Framework 2.0 - Le gestionnaire de modules

Le gestionnaire de modules

Webinar pour zend.com/fr, mercredi 17 octobre 2012

mardi 16 octobre 12

Page 2: Zend Framework 2.0 - Le gestionnaire de modules

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

Page 3: Zend Framework 2.0 - Le gestionnaire de modules

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

Page 4: Zend Framework 2.0 - Le gestionnaire de modules

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

Page 5: Zend Framework 2.0 - Le gestionnaire de modules

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

Page 6: Zend Framework 2.0 - Le gestionnaire de modules

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

Page 7: Zend Framework 2.0 - Le gestionnaire de modules

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

Page 8: Zend Framework 2.0 - Le gestionnaire de modules

Les modules dans l’application

mardi 16 octobre 12

Page 9: Zend Framework 2.0 - Le gestionnaire de modules

Structure d’un module

mardi 16 octobre 12

Page 10: Zend Framework 2.0 - Le gestionnaire de modules

Distribuer un module

• Composer

• Git

• Http

• Copier coller

mardi 16 octobre 12

Page 11: Zend Framework 2.0 - Le gestionnaire de modules

Activer un module

• Ajouter le module à la configuration de l’application

mardi 16 octobre 12

Page 12: Zend Framework 2.0 - Le gestionnaire de modules

Un peu de code !

<?php

namespace MyModule;

class Module {}

mardi 16 octobre 12

Page 13: Zend Framework 2.0 - Le gestionnaire de modules

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

Page 14: Zend Framework 2.0 - Le gestionnaire de modules

Un vrai module 2/3

mardi 16 octobre 12

Page 15: Zend Framework 2.0 - Le gestionnaire de modules

Un vrai module 3/3

La méthode « getServiceConfig() »permet de définir ses propres aides de vues :

mardi 16 octobre 12

Page 16: Zend Framework 2.0 - Le gestionnaire de modules

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

Page 17: Zend Framework 2.0 - Le gestionnaire de modules

Utiliser la fabrique 1/2

La fabrique principale peut être récupérée depuis le gestionnaire de services :

mardi 16 octobre 12

Page 18: Zend Framework 2.0 - Le gestionnaire de modules

Utiliser la fabrique 2/2

L’utilisation d’une aide d’action rend le code moins compact :

mardi 16 octobre 12

Page 19: Zend Framework 2.0 - Le gestionnaire de modules

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

Page 20: Zend Framework 2.0 - Le gestionnaire de modules

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

Page 21: Zend Framework 2.0 - Le gestionnaire de modules

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

Page 22: Zend Framework 2.0 - Le gestionnaire de modules

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

Page 23: Zend Framework 2.0 - Le gestionnaire de modules

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