Les créateurs de Zend Framework 3 sont de grands fans de différents modèles de conception. Bien que vous n'ayez pas à comprendre les modèles pour lire ce livre, cette section a pour but de vous donner une idée des modèles de conception sur lesquels ZF3 est basé.
Le Modèle MVC (Model-Vue-Controller). Le modèle MVC est utilisé dans tous les frameworks PHP récents. Dans une application MVC, vous séparez votre code en trois catégories: les modèles (la logique métier), les vues (le rendu d'affichage) et les contrôleurs (le code responsable de l'interaction avec l'utilisateur). Egalement appelé la séparation des préoccupations. Avec le modèle MVC, vous pouvez réutiliser vos composants. Il est également facile de remplacer n'importe quelle partie de cet triptyque. Par exemple, vous pouvez facilement remplacer une vue par une autre, sans changer votre logique métier.
Le Modèle DDD (Domain Driven Design). Avec Zend Framework 3, vous aurez par convention la couche modèle divisée en entités (classes mappées sur les tables de base de données), en repositories (classes utilisées pour extraire des entités de base de données), en value objects (des classes modèles sans identité) et en services (classes responsables de la logique métier).
Le modèle Aspect Oriented Design. Dans ZF3, tout est piloté par les événements.
Lorsqu'un utilisateur du site demande une page, un événement est généré (déclenché).
Un listener (ou un observateur) peut attraper cet événement et faire quelque chose avec. Par exemple, le composant Zend\Router
analyse l'URL et détermine la classe de contrôleur à appeler. Lorsque l'événement atteint finalement le rendu de page, une réponse HTTP est générée et l'utilisateur voit la page Web.
Le modèle Singleton. Dans ZF3, il y a l'objet gestionnaire de service qui est le conteneur centralisé de tous les services disponibles dans l'application. Chaque service existe dans une seule instance seulement.
Les modèles Strategy. Une stratégie est juste une classe encapsulant un algorithme. Et vous pouvez utiliser différents algorithmes basés sur certaines conditions. Par exemple, le moteur de rendu des pages a plusieurs stratégies de rendu, ce qui permet de retourner différent types (e moteur de rendu peut générer une page HTML, une réponse JSON, un flux RSS, etc.)
Les modèles Adapter. Des adaptateurs permettent d'adapter une classe générique à un cas d'utilisation concret.
Par exemple, le composant Zend\Db
fournit un accès générique à la base de données en utilisant des adaptateurs pour chaque base de données supportée (SQLite, MySQL, PostgreSQL, etc.)
Les modèles Factory. Vous pouvez créer une instance d'une classe en utilisant l'opérateur new
.
Ou vous pouvez la créer avec une classe factory. Une classe factory est juste une classe encapsulant la création d'autres objets.
Elles sont utiles, car elles simplifient l'injection de dépendance.
Leur utilisation simplifie également le test de vos classes modèle et contrôleur.