Pour les lecteurs qui ont travaillé avec Zend Framework 2, cette section vous donnera quelques informations sur ce qui a changé dans la version 3.
Vous trouvererz ci-dessous, les principales différences techniques entre ZF2 et ZF3 :
ZF3 est une version évolutive, donc la rétrocompatibilité est préservée dans la plupart des cas.
Cependant, certaines modifications doivent être effectuées pour migrer votre code si vous avez utilisé ServiceLocatorAwareInterface
(ce que vous avez probablement fait). Avec ZF3, cette interface a été supprimée et toutes les dépendances doivent maintenant être injectées dans les factories.
Ainsi, vous devrez créer des factories pour la plupart de vos contrôleurs, services, aides de vue (view helpers) et plugins de contrôleur.
Dans ZF2, les composants étaient stockés dans un seul dépot GIT.
Avec ZF3, les composants sont stockés dans plusieurs dépots GIT, un dépot par composants (par exemple,
zendframework/zend-mvc
, zendframework/zend-servicemanager
, zendframework/zend-form
, etc).
Cela permet de développer et déployer les composants indépendamment les uns des autres.
Les composants sont encore plus isolés qu'auparavant et ont des dépendances minimales les uns sur les autres. Le composant Zend\Mvc
a été divisé en plusieurs nouveaux composants. Par exemple, les fonctionnalités de routage ont été déplacées vers le nouveau composant Zend\Router
.
Il vous est maintenant recommandé de spécifier les noms des composants dont votre application dépend dans le fichier composer.json
,
bien qu'il soit toujours possible de dépendre du paquet zendframework/zendframework
, qui est un méta-paquet installant tous les composants disponibles.
Dans ZF3, un plugin spécial Composant appelé component installer a été introduit. Il permet d'installer des composants en tant que modules ZF. En injectant notamment des informations sur le composant dans le fichier de configuration de l'application.
Les développeurs ZF3 ont fait un excellent travail en améliorant les performances des composants Zend\ServiceManager
et Zend\EventManager
.
Ils sont bien plus rapides qu'avant. L'inconvénient est que vous devez effectuer un travail de migration pour utiliser ces nouvelles fonctionnalités
Les noms des contrôleurs et des services doivent maintenant respecter la fonctionnalité PHP 5.5 appelée ::class
.
Par exemple, si précédemment vous avez déclaré votre contrôleur en tant que Application\Controller\Index
,
vous devrez le renommer en IndexController::class
. Si précédemment vous nomiez vos services comme vous le souhaitiez, il est
maintenant recommandé de le faire en utilisant ServiceClassName::class
. Lisez la documentation du composant Mvc
pour plus d'informations.
Dans ZF2, la structure des dossiers recommandée était PSR-0, tandis que dans ZF3, il s'agit de PSR-4. Cela nécessite un (petit) travail de migration.
Zend croit que l'avenir de PHP est dans le middleware. "Le middleware (ou interlogiciel) est, tout simplement, du code assis (???) entre une requête HTTP entrante et la réponse HTTP sortante." Vous pouvez maintenant enregistrer un listener de middleware dans une application MVC. ?!*%? Si quelqu'un peut proposer une meilleure définition...
Maintenant, chaque dossier de composants contient sa propre documentation. La documentation est maintenant mieux conçue, elle est au format Markdown.