Afup 2015 zf3 le futur de php

1 602 vues

Publié le

Etat des lieux sur ZF3

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

Aucun téléchargement
Vues
Nombre de vues
1 602
Sur SlideShare
0
Issues des intégrations
0
Intégrations
216
Actions
Partages
0
Téléchargements
5
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Afup 2015 zf3 le futur de php

  1. 1. Confidential - © All rights reserved. Zend Technologies, Inc.1 Confidential - © All rights reserved. Zend Technologies, Inc. Zend Framework 3 Le futur de PHP
  2. 2. Confidential - © All rights reserved. Zend Technologies, Inc.2 Twitter @so_php_ie Paris Zend Framework Meet’up http://www.meetup.com/fr/Paris-Zend-Framework-Meetup/ Moi, moi et moi... Twitter @venusZeDog
  3. 3. Confidential - © All rights reserved. Zend Technologies, Inc.3 La nouvelle version : ZF3
  4. 4. Confidential - © All rights reserved. Zend Technologies, Inc.4 Objectifs de ZF3 • Séparation du framework en composants réutilisables • Performances • Facilité d’utilisation • Centré sur PSR7 et les “middlewares”
  5. 5. Confidential - © All rights reserved. Zend Technologies, Inc.5 Séparation du framework en différents composants Réalisé depuis ZF2.5: • Chaque composant possède sont propre repository • Chaque élément est versionné de façon indépendante • Le package du framework devient un méta-package faisant références à différentes versions des composants. But • Laissé au composant la possibilité d’évoluer à son rythme • Faciliter la répartition des responsabilités des source managers.
  6. 6. Confidential - © All rights reserved. Zend Technologies, Inc.6 Qu’est-ce qui change avec ZF2 ? • Le gestionnaire de services • Le gestionnaire d’évènements • Le composant MVC en conséquence des deux précédentes modifications
  7. 7. Confidential - © All rights reserved. Zend Technologies, Inc.7 Le gestionnaire de services
  8. 8. Confidential - © All rights reserved. Zend Technologies, Inc.8 Le gestionnaire de service • Désormais compatible avec container-interop • 4 x plus rapide • Reste compatible avec la version ZF2 pour la plus grande partie • Disparition du peering entre gestionnaires • Suppression des noms canoniques
  9. 9. Confidential - © All rights reserved. Zend Technologies, Inc.9 Le gestionnaire de service - container interop C’est un projet qui propose une interface générale pour tous les containers d’injection en PHP. Pas encadré par le FIG pour le moment. namespace InteropContainer; interface ContainerInterface { public function get($id); public function has($id); }
  10. 10. Confidential - © All rights reserved. Zend Technologies, Inc.10 Le gestionnaire de service - nouvelle interface pour les factories interface FactoryInterface { public function __invoke(ContainerInterface $container, $requestedName, array $options = null); On peut donc utiliser désormais la même factory pour différents services car le nom du service est passé en paramètre.
  11. 11. Confidential - © All rights reserved. Zend Technologies, Inc.11 Le gestionnaire d’évènements
  12. 12. Confidential - © All rights reserved. Zend Technologies, Inc.12 Gestionnaire d’évènements • Au moins 4x plus rapide • Enfin débarassé du polymorphisme de paramètres pour trigger()
  13. 13. Confidential - © All rights reserved. Zend Technologies, Inc.13 Gestionnaire d’évènements - Adieu “trigger” pourri... Emettre une notification à partir de ses éléments : public function trigger($eventName, $target = null, $argv = []) Si on souhaite ajouter une fonction de “callback” de gestion de propagation : public function triggerUntil(callable $callback, $eventName, $target = null, $argv = []) Emmettre une notification déjà instanciée: public function triggerEvent(EventInterface $event) Avec une fonction de callback : public function triggerEventUntil(callable $callback, EventInterface $event)
  14. 14. Confidential - © All rights reserved. Zend Technologies, Inc.14 Gestionnaire d’évènements - Attachement des aggrégats Désormais impossible d’attacher un aggregat à travers le gestionnaire d’évènement: $eventManager->attachAggregate(ListenerAggregate $aggregate) On doit désormais utiliser : $aggregate->attach(EventManager $events)
  15. 15. Confidential - © All rights reserved. Zend Technologies, Inc.15 Le modèle MVC
  16. 16. Confidential - © All rights reserved. Zend Technologies, Inc.16 MCV - Ce qui change • Conséquences des changements sur le gestionnaire de services • Conséquences des changements sur le gestionnaire d’évènements • En gros… pas de rupture de compatbilité. • NOUVEAU : le support des “middlewares”.
  17. 17. Confidential - © All rights reserved. Zend Technologies, Inc.17 Middlewares ? Vous avez dit middlewares ?
  18. 18. Confidential - © All rights reserved. Zend Technologies, Inc.18 Kezako ? • Un middleware est un élément de code qui traite une requête et renvoie une réponse. • les middlewares sont généralement utilisés en “couches” :
  19. 19. Confidential - © All rights reserved. Zend Technologies, Inc.19 Que vient faire Zend Framework là dedans ? On peut appeler un middleware en remplacement d’un controller. Il suffit de le définir dans le router: 'mwRoute' => [ 'type' => 'literal', 'options' => [ 'route' => '/myMiddleWare', 'defaults' => [ 'middleware' => myMiddleWare::class, ... ], ], ],
  20. 20. Confidential - © All rights reserved. Zend Technologies, Inc.20 Comment coder un middleware dans ZF ? • C’est un callable quelconque – qui reçoit en entrée un requête compatible avec PSR-7 – qui renvoie un réponse compatible avec PSR-7 • Ce middleware n’est donc pas forcément une implémentation “Zend”. Il suffit qu’il soit compatible avec la norme PSR-7.
  21. 21. Confidential - © All rights reserved. Zend Technologies, Inc.21 PSR-7 middleware avec Zend
  22. 22. Confidential - © All rights reserved. Zend Technologies, Inc.22 le composant zend-diactoros • implémentation Zend de la norme PSR-7 • propose des classes de requêtes et de réponses suivant la norme PSR-7
  23. 23. Confidential - © All rights reserved. Zend Technologies, Inc.23 le composant zend-strategility • Implemente les middlewares selon la norme PSR-7 • un middleware est une fonction qui possède en paramètres – une requête PSR-7 – une réponse PSR-7 $pipe = new MiddlewarePipe(); $server = Server::createServer($pipe, $_SERVER, $_GET, $_POST, $_COOKIE, $_FILES); $pipe->pipe('/bidule',function($req, $rep){ $rep->write('hop'); return $rep; }); $server->listen();
  24. 24. Confidential - © All rights reserved. Zend Technologies, Inc.24 Zend Expressive
  25. 25. Confidential - © All rights reserved. Zend Technologies, Inc.25 L’objectif • Créer un micro-framework en associant – Un middleware compatible PSR-7 (Zend Stratigility) – Un router – Un container d’injection • en favorisant l’interopérabilité – PSR7 – Container Interop..
  26. 26. Confidential - © All rights reserved. Zend Technologies, Inc.26 Un tout petit exemple • Avec Composer • On choisit les composants
  27. 27. Confidential - © All rights reserved. Zend Technologies, Inc.27 Merci !

×