SlideShare une entreprise Scribd logo
1  sur  42
Intervenant:   Benoît DURAND       b.durand at epixelic dot com




                               Zend Framework 2
                                                       (beta2)




21/12/2011                                        Développement
Architecture
L’architecture de ZF1
1. Singletons
2. Registres
3. Dépendances codées « en dur »




21/12/2011           ZF2           3
Un nouveau cœur pour ZF2
1. Programmation orientée aspect
2. SOLID
3. Exploiter pleinement le protocole HTTP




21/12/2011            ZF2                   4
Autoload
Autoload
1. Suppression des appels à require_once




21/12/2011            ZF2                  6
Autoload
1. Suppression des appels à require_once
2. Compatible PSR-0




21/12/2011            ZF2                  7
Autoload
1. Suppression des appels à require_once
2. Compatible PSR-0
3. Chargement par namespace, et par préfix




21/12/2011            ZF2                    8
Autoload
1.    Suppression des appels à require_once
2.    Compatible PSR-0
3.    Chargement par namespace, et par préfix
4.    Chargement avec une classmap




21/12/2011               ZF2                    9
Autoload
1.    Suppression des appels à require_once
2.    Compatible PSR-0
3.    Chargement par namespace, et par préfix
4.    Chargement avec une classmap




21/12/2011               ZF2                    10
Injection de dépendances
Injection de dépendances
• Découpler les dépendances entre deux
  composants
• Respecter la séparation des responsabilités




21/12/2011             ZF2                      12
Di : exemple (1)
// Dépendance forte
class Paginator
{
   public function __construct() {
     $this->adapter = new Array();
   }
}



21/12/2011               ZF2         13
Di : exemple (2)
// Dépendance faible
class Paginator
{
   public function __construct(Adapter $adapter) {
     $this->adapter = $adapter;
   }
}



21/12/2011               ZF2                         14
Di : trois types de définitions
1. Constructeur
2. Setter
3. Annotation




21/12/2011          ZF2           15
Di : trois stratégies
1. A l’exécution
2. Par compilation
3. Builder




21/12/2011              ZF2   16
Gestion par évènements
Vocabulaire
1. Un event est une action
2. Un listener est une fonction qui peut réagir à
   un event
3. Un EventManager est un objet qui agrège
   des listeners pour un ou plusieurs events, et
   qui déclenche ces events




21/12/2011              ZF2                     18
EventManager : exemple
use ZendEventManagerEventManager;

$events = new EventManager;
$events->attach(‘do’, function($e) {
    printf(‘Evènement %s avec les paramètres %s’,
       $e->getName(),
       json_encode($e->getParams())
    );
});

$params = array(‘foo’ => ‘bar’, ‘baz’ => ‘bat’);
$events->trigger(‘do’, null, $params);
// Affiche Evènement do avec les paramètres {"foo":"bar","baz":"bat"}



21/12/2011                        ZF2                               19
MVC
Architecture
• Une application est composée d’un router,
  d’un locator, et d’un event manager
• Une route doit retourner le nom d’un
  contrôleur
• Le contrôleur est récupéré depuis le locator,
  et exécuté
• Route et dispatch sont deux events



21/12/2011              ZF2                       21
Gotta dispatch them all
• Applications MVC




21/12/2011           ZF2   22
Gotta dispatch them all
• Applications MVC
• Classes serveur (Amf, Json, Soap, XmlRpc)




21/12/2011             ZF2                    23
Gotta dispatch them all
• Applications MVC
• Classes serveur (Amf, Json, Soap, XmlRpc)
• Clients HTTP




21/12/2011             ZF2                    24
Modules
Définition



      « Un module est un ensemble de classes
           et d’autres fichiers qui résout
              un problème spécifique
         au sein d’une application métier. »
                                         ZF2 RFC




21/12/2011              ZF2                    26
Architecture
• C’est l’unité de base d’une application MVC
  ZF2




21/12/2011             ZF2                      27
Architecture
• C’est l’unité de base d’une application MVC
  ZF2
• C’est simple à créer :
      – Un espace de nom




21/12/2011                 ZF2                  28
Architecture
• C’est l’unité de base d’une application MVC
  ZF2
• C’est simple à créer :
      – Un espace de nom
      – Une seule classe obligatoire : Module




21/12/2011                   ZF2                29
Exemple
// modules/EpxBlog/Module.php
namespace EpxBlog;

class Module {}




21/12/2011             ZF2      30
Module.php : cas d’utilisation
// modules/EpxBlog/Module.php
namespace EpxBlog;

class Module
{
   // Chargement automatique des ressources
   public function getAutoloaderConfig() {}

    // Configuration de base du module
    public function getConfig() {}
}

21/12/2011                 ZF2                31
Que contient un module ?
• Du code PHP (avec ou sans MVC)




21/12/2011           ZF2           32
Que contient un module ?
• Du code PHP (avec ou sans MVC)
• Des fichiers statiques (styles, javascript,
  images, etc)




21/12/2011               ZF2                    33
Que contient un module ?
• Du code PHP (avec ou sans MVC)
• Des fichiers statiques (styles, javascript,
  images, etc)
• Des tests unitaires




21/12/2011               ZF2                    34
Que contient un module ?
• Du code PHP (avec ou sans MVC)
• Des fichiers statiques (styles, javascript,
  images, etc)
• Des tests unitaires
• La documentation




21/12/2011               ZF2                    35
Que contient un module ?
• Du code PHP (avec ou sans MVC)
• Des fichiers statiques (styles, javascript,
  images, etc)
• Des tests unitaires
• La documentation
• Ce que vous voulez




21/12/2011               ZF2                    36
Contrôleur
 namespace EpxBlogController;

 use ZendMvcControllerActionController;

 class ArticleController extends ActionController
 {
    public function viewAction()
    {
      $query = $this->getRequest()->query();
      return array('titre' => $query->get('slug'));
    }
 }

21/12/2011                   ZF2                      37
Vue
 use ZendEventManagerEventCollection,
   ZendEventManagerListenerAggregate;

 class ViewListener implements ListenerAggregate
 {
    public function attach(EventCollection $events)
    {
      $events->attach('dispatch', array(
          $this, 'renderView', -100
      ));
    }

     /* … */
 }


21/12/2011                         ZF2                38
Dépendance
 namespace EpxBlogController;

 use ZendMvcControllerActionController,
   PDO as DbAdapter;

 class ArticleController extends ActionController
 {
    public function setDbAdapter(DbAdapter $dbAdapter)
    {
      $this->dbAdapter = $dbAdapter;
    }
 }

21/12/2011                 ZF2                       39
Configuration via le Di
 // config/autoload/database.php
 return array(
    ‘di’ => array(
       ‘PDO’ => array(
          ‘parameters’ => array(
            ‘dsn’ => ‘mysql:dbname=XXXX;host=XXXX’,
            ‘username’ => ‘XXXX’,
            ‘password’ => ‘XXXX’,
          )
       )
    )
 );

21/12/2011                 ZF2                        40
Liens
•   http://framework.zend.com/zf2
•   https://github.com/zendframework
•   http://packages.zendframework.com/
•   http://modules.zendframework.com/




11/04/2011                 Git           41
Questions ?




21/12/2011        ZF2      42

Contenu connexe

Tendances

Tendances (20)

.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP
 
Csharp1 : quelques elements de base
Csharp1 :  quelques elements de baseCsharp1 :  quelques elements de base
Csharp1 : quelques elements de base
 
Introduction à Python
Introduction à PythonIntroduction à Python
Introduction à Python
 
Javascript ne se limite pas à jquery
Javascript ne se limite pas à jqueryJavascript ne se limite pas à jquery
Javascript ne se limite pas à jquery
 
Cours php
Cours phpCours php
Cours php
 
cpp1 : Quelques elements de base du C++
cpp1 : Quelques elements de base du C++cpp1 : Quelques elements de base du C++
cpp1 : Quelques elements de base du C++
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmique
 
Hibernate jpa
Hibernate jpaHibernate jpa
Hibernate jpa
 
Requêtes HTTP synchrones et asynchrones
Requêtes HTTPsynchrones et asynchronesRequêtes HTTPsynchrones et asynchrones
Requêtes HTTP synchrones et asynchrones
 
"Input/Ouput, 16 ans après" à Devoxx France 2012
"Input/Ouput, 16 ans après" à Devoxx France 2012"Input/Ouput, 16 ans après" à Devoxx France 2012
"Input/Ouput, 16 ans après" à Devoxx France 2012
 
Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...
 
Playing With PHP 5.3
Playing With PHP 5.3Playing With PHP 5.3
Playing With PHP 5.3
 
Introduction à Laravel
Introduction à LaravelIntroduction à Laravel
Introduction à Laravel
 
Développement informatique : Programmation fonctionnelle, décorateur et génér...
Développement informatique : Programmation fonctionnelle, décorateur et génér...Développement informatique : Programmation fonctionnelle, décorateur et génér...
Développement informatique : Programmation fonctionnelle, décorateur et génér...
 
Retours sur java 8 devoxx fr 2016
Retours sur java 8 devoxx fr 2016Retours sur java 8 devoxx fr 2016
Retours sur java 8 devoxx fr 2016
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScript
 
Change mind about JS
Change mind about JSChange mind about JS
Change mind about JS
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JS
 
Les listes en Python
Les listes en PythonLes listes en Python
Les listes en Python
 
Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 Performant
 

En vedette

Presentation egc
Presentation egcPresentation egc
Presentation egc
ticien
 
Lesson03 Dot Product And Matrix Multiplication Slides Notes
Lesson03    Dot  Product And  Matrix  Multiplication Slides NotesLesson03    Dot  Product And  Matrix  Multiplication Slides Notes
Lesson03 Dot Product And Matrix Multiplication Slides Notes
Matthew Leingang
 
Blotting techniques includes southren,northern,western and dot blotting
Blotting techniques includes southren,northern,western and dot blottingBlotting techniques includes southren,northern,western and dot blotting
Blotting techniques includes southren,northern,western and dot blotting
bbmy
 
2013-3_führung auf distanz
2013-3_führung auf distanz2013-3_führung auf distanz
2013-3_führung auf distanz
BridgingIT GmbH
 
UMCG All about data 2014 World of Clinical Information Models CIMI
UMCG All about data 2014 World of Clinical Information Models CIMIUMCG All about data 2014 World of Clinical Information Models CIMI
UMCG All about data 2014 World of Clinical Information Models CIMI
Michael van der Zel
 

En vedette (20)

Développer en mode kick-ass à Scrum Day
Développer en mode kick-ass à Scrum DayDévelopper en mode kick-ass à Scrum Day
Développer en mode kick-ass à Scrum Day
 
Coordination d une équipe d ANT en centre Ardeche
Coordination d une équipe d ANT en centre ArdecheCoordination d une équipe d ANT en centre Ardeche
Coordination d une équipe d ANT en centre Ardeche
 
Développer en mode kick-ass à Devoxx France
Développer en mode kick-ass à Devoxx FranceDévelopper en mode kick-ass à Devoxx France
Développer en mode kick-ass à Devoxx France
 
Chypre et Recyclage
Chypre et RecyclageChypre et Recyclage
Chypre et Recyclage
 
Présentation structuration touristique ADT-CDT Deux-Sèvres
Présentation structuration touristique ADT-CDT Deux-SèvresPrésentation structuration touristique ADT-CDT Deux-Sèvres
Présentation structuration touristique ADT-CDT Deux-Sèvres
 
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven
 
Asterisk trixbox
Asterisk trixboxAsterisk trixbox
Asterisk trixbox
 
Presentation egc
Presentation egcPresentation egc
Presentation egc
 
Lesson03 Dot Product And Matrix Multiplication Slides Notes
Lesson03    Dot  Product And  Matrix  Multiplication Slides NotesLesson03    Dot  Product And  Matrix  Multiplication Slides Notes
Lesson03 Dot Product And Matrix Multiplication Slides Notes
 
Dot Dot George Seurat
Dot Dot George SeuratDot Dot George Seurat
Dot Dot George Seurat
 
Creation projet e commerce
Creation projet e commerceCreation projet e commerce
Creation projet e commerce
 
J.M Truong – Reprendre. Ni sang ni dette – Conférence Quimper 141204
J.M Truong – Reprendre. Ni sang ni dette – Conférence Quimper 141204J.M Truong – Reprendre. Ni sang ni dette – Conférence Quimper 141204
J.M Truong – Reprendre. Ni sang ni dette – Conférence Quimper 141204
 
Blotting techniques includes southren,northern,western and dot blotting
Blotting techniques includes southren,northern,western and dot blottingBlotting techniques includes southren,northern,western and dot blotting
Blotting techniques includes southren,northern,western and dot blotting
 
E Merchandising V2010
E Merchandising V2010E Merchandising V2010
E Merchandising V2010
 
2013-3_führung auf distanz
2013-3_führung auf distanz2013-3_führung auf distanz
2013-3_führung auf distanz
 
Living with licensing
Living with licensingLiving with licensing
Living with licensing
 
Mobile Communitys
Mobile CommunitysMobile Communitys
Mobile Communitys
 
Dot matrix Analysis Tools (Bioinformatics)
Dot matrix Analysis Tools (Bioinformatics)Dot matrix Analysis Tools (Bioinformatics)
Dot matrix Analysis Tools (Bioinformatics)
 
UMCG All about data 2014 World of Clinical Information Models CIMI
UMCG All about data 2014 World of Clinical Information Models CIMIUMCG All about data 2014 World of Clinical Information Models CIMI
UMCG All about data 2014 World of Clinical Information Models CIMI
 
RED DOT
RED DOTRED DOT
RED DOT
 

Similaire à Zend Framework 2

Introduction à Zend Framework 2
Introduction à Zend Framework 2Introduction à Zend Framework 2
Introduction à Zend Framework 2
Mickael Perraud
 
Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013
Xavier NOPRE
 
GWT : under the hood
GWT : under the hoodGWT : under the hood
GWT : under the hood
svuillet
 
Présentation Gradle au LyonJUG par Grégory Boissinot - Zenika
Présentation Gradle au LyonJUG par Grégory Boissinot - ZenikaPrésentation Gradle au LyonJUG par Grégory Boissinot - Zenika
Présentation Gradle au LyonJUG par Grégory Boissinot - Zenika
Zenika
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications Java
Antoine Rey
 
Soirée OSGi au Paris Jug (14/10/2008)
Soirée OSGi au Paris Jug (14/10/2008)Soirée OSGi au Paris Jug (14/10/2008)
Soirée OSGi au Paris Jug (14/10/2008)
Cyrille Le Clerc
 
Play Framework
Play FrameworkPlay Framework
Play Framework
Armaklan
 

Similaire à Zend Framework 2 (20)

Introduction à Zend Framework 2
Introduction à Zend Framework 2Introduction à Zend Framework 2
Introduction à Zend Framework 2
 
Zf2 ce-qui-va-changer
Zf2 ce-qui-va-changerZf2 ce-qui-va-changer
Zf2 ce-qui-va-changer
 
Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013
 
GWT : under the hood
GWT : under the hoodGWT : under the hood
GWT : under the hood
 
Présentation CoreOS
Présentation CoreOSPrésentation CoreOS
Présentation CoreOS
 
Présentation Gradle au LyonJUG par Grégory Boissinot - Zenika
Présentation Gradle au LyonJUG par Grégory Boissinot - ZenikaPrésentation Gradle au LyonJUG par Grégory Boissinot - Zenika
Présentation Gradle au LyonJUG par Grégory Boissinot - Zenika
 
Framework Hibernate
Framework HibernateFramework Hibernate
Framework Hibernate
 
Les Nouveautés de zabbix 2.2 par Alain Ganuchaud
Les Nouveautés de zabbix 2.2 par Alain GanuchaudLes Nouveautés de zabbix 2.2 par Alain Ganuchaud
Les Nouveautés de zabbix 2.2 par Alain Ganuchaud
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications Java
 
Springioc
SpringiocSpringioc
Springioc
 
Afup 2015 zf3 le futur de php
Afup 2015   zf3 le futur de phpAfup 2015   zf3 le futur de php
Afup 2015 zf3 le futur de php
 
Laravel yet another framework
Laravel  yet another frameworkLaravel  yet another framework
Laravel yet another framework
 
L’environnement de programmation fonctionnelle DrRacket
L’environnement de programmation fonctionnelle DrRacketL’environnement de programmation fonctionnelle DrRacket
L’environnement de programmation fonctionnelle DrRacket
 
Dev cloud java : la tête dans les nuages
Dev cloud java : la tête dans les nuagesDev cloud java : la tête dans les nuages
Dev cloud java : la tête dans les nuages
 
Soirée OSGi au Paris Jug (14/10/2008)
Soirée OSGi au Paris Jug (14/10/2008)Soirée OSGi au Paris Jug (14/10/2008)
Soirée OSGi au Paris Jug (14/10/2008)
 
Play Framework
Play FrameworkPlay Framework
Play Framework
 
Gwt jetty et sources de données
Gwt   jetty et sources de donnéesGwt   jetty et sources de données
Gwt jetty et sources de données
 
SOLID : les principes à l’origine du succès de Symfony et de vos applications
SOLID : les principes à l’origine du succès de Symfony et de vos applicationsSOLID : les principes à l’origine du succès de Symfony et de vos applications
SOLID : les principes à l’origine du succès de Symfony et de vos applications
 
Aspect avec AspectJ
Aspect avec AspectJAspect avec AspectJ
Aspect avec AspectJ
 
Cours spring
Cours springCours spring
Cours spring
 

Zend Framework 2

  • 1. Intervenant: Benoît DURAND b.durand at epixelic dot com Zend Framework 2 (beta2) 21/12/2011 Développement
  • 3. L’architecture de ZF1 1. Singletons 2. Registres 3. Dépendances codées « en dur » 21/12/2011 ZF2 3
  • 4. Un nouveau cœur pour ZF2 1. Programmation orientée aspect 2. SOLID 3. Exploiter pleinement le protocole HTTP 21/12/2011 ZF2 4
  • 6. Autoload 1. Suppression des appels à require_once 21/12/2011 ZF2 6
  • 7. Autoload 1. Suppression des appels à require_once 2. Compatible PSR-0 21/12/2011 ZF2 7
  • 8. Autoload 1. Suppression des appels à require_once 2. Compatible PSR-0 3. Chargement par namespace, et par préfix 21/12/2011 ZF2 8
  • 9. Autoload 1. Suppression des appels à require_once 2. Compatible PSR-0 3. Chargement par namespace, et par préfix 4. Chargement avec une classmap 21/12/2011 ZF2 9
  • 10. Autoload 1. Suppression des appels à require_once 2. Compatible PSR-0 3. Chargement par namespace, et par préfix 4. Chargement avec une classmap 21/12/2011 ZF2 10
  • 12. Injection de dépendances • Découpler les dépendances entre deux composants • Respecter la séparation des responsabilités 21/12/2011 ZF2 12
  • 13. Di : exemple (1) // Dépendance forte class Paginator { public function __construct() { $this->adapter = new Array(); } } 21/12/2011 ZF2 13
  • 14. Di : exemple (2) // Dépendance faible class Paginator { public function __construct(Adapter $adapter) { $this->adapter = $adapter; } } 21/12/2011 ZF2 14
  • 15. Di : trois types de définitions 1. Constructeur 2. Setter 3. Annotation 21/12/2011 ZF2 15
  • 16. Di : trois stratégies 1. A l’exécution 2. Par compilation 3. Builder 21/12/2011 ZF2 16
  • 18. Vocabulaire 1. Un event est une action 2. Un listener est une fonction qui peut réagir à un event 3. Un EventManager est un objet qui agrège des listeners pour un ou plusieurs events, et qui déclenche ces events 21/12/2011 ZF2 18
  • 19. EventManager : exemple use ZendEventManagerEventManager; $events = new EventManager; $events->attach(‘do’, function($e) { printf(‘Evènement %s avec les paramètres %s’, $e->getName(), json_encode($e->getParams()) ); }); $params = array(‘foo’ => ‘bar’, ‘baz’ => ‘bat’); $events->trigger(‘do’, null, $params); // Affiche Evènement do avec les paramètres {"foo":"bar","baz":"bat"} 21/12/2011 ZF2 19
  • 20. MVC
  • 21. Architecture • Une application est composée d’un router, d’un locator, et d’un event manager • Une route doit retourner le nom d’un contrôleur • Le contrôleur est récupéré depuis le locator, et exécuté • Route et dispatch sont deux events 21/12/2011 ZF2 21
  • 22. Gotta dispatch them all • Applications MVC 21/12/2011 ZF2 22
  • 23. Gotta dispatch them all • Applications MVC • Classes serveur (Amf, Json, Soap, XmlRpc) 21/12/2011 ZF2 23
  • 24. Gotta dispatch them all • Applications MVC • Classes serveur (Amf, Json, Soap, XmlRpc) • Clients HTTP 21/12/2011 ZF2 24
  • 26. Définition « Un module est un ensemble de classes et d’autres fichiers qui résout un problème spécifique au sein d’une application métier. » ZF2 RFC 21/12/2011 ZF2 26
  • 27. Architecture • C’est l’unité de base d’une application MVC ZF2 21/12/2011 ZF2 27
  • 28. Architecture • C’est l’unité de base d’une application MVC ZF2 • C’est simple à créer : – Un espace de nom 21/12/2011 ZF2 28
  • 29. Architecture • C’est l’unité de base d’une application MVC ZF2 • C’est simple à créer : – Un espace de nom – Une seule classe obligatoire : Module 21/12/2011 ZF2 29
  • 31. Module.php : cas d’utilisation // modules/EpxBlog/Module.php namespace EpxBlog; class Module { // Chargement automatique des ressources public function getAutoloaderConfig() {} // Configuration de base du module public function getConfig() {} } 21/12/2011 ZF2 31
  • 32. Que contient un module ? • Du code PHP (avec ou sans MVC) 21/12/2011 ZF2 32
  • 33. Que contient un module ? • Du code PHP (avec ou sans MVC) • Des fichiers statiques (styles, javascript, images, etc) 21/12/2011 ZF2 33
  • 34. Que contient un module ? • Du code PHP (avec ou sans MVC) • Des fichiers statiques (styles, javascript, images, etc) • Des tests unitaires 21/12/2011 ZF2 34
  • 35. Que contient un module ? • Du code PHP (avec ou sans MVC) • Des fichiers statiques (styles, javascript, images, etc) • Des tests unitaires • La documentation 21/12/2011 ZF2 35
  • 36. Que contient un module ? • Du code PHP (avec ou sans MVC) • Des fichiers statiques (styles, javascript, images, etc) • Des tests unitaires • La documentation • Ce que vous voulez 21/12/2011 ZF2 36
  • 37. Contrôleur namespace EpxBlogController; use ZendMvcControllerActionController; class ArticleController extends ActionController { public function viewAction() { $query = $this->getRequest()->query(); return array('titre' => $query->get('slug')); } } 21/12/2011 ZF2 37
  • 38. Vue use ZendEventManagerEventCollection, ZendEventManagerListenerAggregate; class ViewListener implements ListenerAggregate { public function attach(EventCollection $events) { $events->attach('dispatch', array( $this, 'renderView', -100 )); } /* … */ } 21/12/2011 ZF2 38
  • 39. Dépendance namespace EpxBlogController; use ZendMvcControllerActionController, PDO as DbAdapter; class ArticleController extends ActionController { public function setDbAdapter(DbAdapter $dbAdapter) { $this->dbAdapter = $dbAdapter; } } 21/12/2011 ZF2 39
  • 40. Configuration via le Di // config/autoload/database.php return array( ‘di’ => array( ‘PDO’ => array( ‘parameters’ => array( ‘dsn’ => ‘mysql:dbname=XXXX;host=XXXX’, ‘username’ => ‘XXXX’, ‘password’ => ‘XXXX’, ) ) ) ); 21/12/2011 ZF2 40
  • 41. Liens • http://framework.zend.com/zf2 • https://github.com/zendframework • http://packages.zendframework.com/ • http://modules.zendframework.com/ 11/04/2011 Git 41