Zend Framework 2

2 485 vues

Publié le

Les nouveautés ZF2 par rapport à ZF1

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
2 485
Sur SlideShare
0
Issues des intégrations
0
Intégrations
7
Actions
Partages
0
Téléchargements
61
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Zend Framework 2

  1. 1. Intervenant: Benoît DURAND b.durand at epixelic dot com Zend Framework 2 (beta2)21/12/2011 Développement
  2. 2. Architecture
  3. 3. L’architecture de ZF11. Singletons2. Registres3. Dépendances codées « en dur »21/12/2011 ZF2 3
  4. 4. Un nouveau cœur pour ZF21. Programmation orientée aspect2. SOLID3. Exploiter pleinement le protocole HTTP21/12/2011 ZF2 4
  5. 5. Autoload
  6. 6. Autoload1. Suppression des appels à require_once21/12/2011 ZF2 6
  7. 7. Autoload1. Suppression des appels à require_once2. Compatible PSR-021/12/2011 ZF2 7
  8. 8. Autoload1. Suppression des appels à require_once2. Compatible PSR-03. Chargement par namespace, et par préfix21/12/2011 ZF2 8
  9. 9. Autoload1. Suppression des appels à require_once2. Compatible PSR-03. Chargement par namespace, et par préfix4. Chargement avec une classmap21/12/2011 ZF2 9
  10. 10. Autoload1. Suppression des appels à require_once2. Compatible PSR-03. Chargement par namespace, et par préfix4. Chargement avec une classmap21/12/2011 ZF2 10
  11. 11. Injection de dépendances
  12. 12. Injection de dépendances• Découpler les dépendances entre deux composants• Respecter la séparation des responsabilités21/12/2011 ZF2 12
  13. 13. Di : exemple (1)// Dépendance forteclass Paginator{ public function __construct() { $this->adapter = new Array(); }}21/12/2011 ZF2 13
  14. 14. Di : exemple (2)// Dépendance faibleclass Paginator{ public function __construct(Adapter $adapter) { $this->adapter = $adapter; }}21/12/2011 ZF2 14
  15. 15. Di : trois types de définitions1. Constructeur2. Setter3. Annotation21/12/2011 ZF2 15
  16. 16. Di : trois stratégies1. A l’exécution2. Par compilation3. Builder21/12/2011 ZF2 16
  17. 17. Gestion par évènements
  18. 18. Vocabulaire1. Un event est une action2. Un listener est une fonction qui peut réagir à un event3. Un EventManager est un objet qui agrège des listeners pour un ou plusieurs events, et qui déclenche ces events21/12/2011 ZF2 18
  19. 19. EventManager : exempleuse 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. 20. MVC
  21. 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 events21/12/2011 ZF2 21
  22. 22. Gotta dispatch them all• Applications MVC21/12/2011 ZF2 22
  23. 23. Gotta dispatch them all• Applications MVC• Classes serveur (Amf, Json, Soap, XmlRpc)21/12/2011 ZF2 23
  24. 24. Gotta dispatch them all• Applications MVC• Classes serveur (Amf, Json, Soap, XmlRpc)• Clients HTTP21/12/2011 ZF2 24
  25. 25. Modules
  26. 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 RFC21/12/2011 ZF2 26
  27. 27. Architecture• C’est l’unité de base d’une application MVC ZF221/12/2011 ZF2 27
  28. 28. Architecture• C’est l’unité de base d’une application MVC ZF2• C’est simple à créer : – Un espace de nom21/12/2011 ZF2 28
  29. 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 : Module21/12/2011 ZF2 29
  30. 30. Exemple// modules/EpxBlog/Module.phpnamespace EpxBlog;class Module {}21/12/2011 ZF2 30
  31. 31. Module.php : cas d’utilisation// modules/EpxBlog/Module.phpnamespace EpxBlog;class Module{ // Chargement automatique des ressources public function getAutoloaderConfig() {} // Configuration de base du module public function getConfig() {}}21/12/2011 ZF2 31
  32. 32. Que contient un module ?• Du code PHP (avec ou sans MVC)21/12/2011 ZF2 32
  33. 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. 34. Que contient un module ?• Du code PHP (avec ou sans MVC)• Des fichiers statiques (styles, javascript, images, etc)• Des tests unitaires21/12/2011 ZF2 34
  35. 35. Que contient un module ?• Du code PHP (avec ou sans MVC)• Des fichiers statiques (styles, javascript, images, etc)• Des tests unitaires• La documentation21/12/2011 ZF2 35
  36. 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 voulez21/12/2011 ZF2 36
  37. 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. 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. 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. 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. 41. Liens• http://framework.zend.com/zf2• https://github.com/zendframework• http://packages.zendframework.com/• http://modules.zendframework.com/11/04/2011 Git 41
  42. 42. Questions ?21/12/2011 ZF2 42

×