Zend Framework est un framework de développement PHP open source entièrement basé sur PHP5 développé par Zend Company. Il peut être utilisé pour développer des programmes et des services Web. Il utilise le modèle architectural MVC (Model-View-Controller) pour séparer les différentes parties de l'application. faciliter le développement et la maintenance des programmes.
ZF2 n'est pas seulement une mise à jour inégale comme les autres frameworks, il réécrit complètement tout le code de ZF1. Le slogan principal est "haute performance".
Jetons un coup d'œil aux nouvelles fonctionnalités apportées par ZF2 :
1. Modularisation (ModuleManager)
Par rapport à ZF1, ZF2 prend en charge nativement le concept de modules. Tout programme PHP tiers peut être transformé en module Zend tant qu'il respecte les normes de codage et la structure du code de Zend. À l'heure actuelle, un lot de modules expérimentaux a été publié (voir Modules ZF2). Il existe de nombreux excellents projets comme Doctrine ORM.
Il est prévisible qu'à mesure que ZF2 mûrit lentement, de plus en plus de modules optionnels émergeront. Il est possible que le développement de futurs projets basés sur ZF2 soit aussi facile et simple que des éléments de base.
2. Piloté par les événements (EventManager)
Dans les programmes traditionnels, les codes sont exécutés dans une séquence linéaire, il est donc souvent difficile de séparer certaines fonctions en un composant ou un module pendant le développement.
Piloté par les événements, ou hook, modifie la façon dont les programmes ordinaires s'exécutent de manière rationalisée. Après avoir appliqué le pilotage événementiel, le programme s'exécutera de manière sautée "événement enregistré" => "événement déclenché", qui peut être exécuté. sans affecter Avec le code du programme d'origine, il est facile d'ajouter une nouvelle logique métier à n'importe quel endroit, ce qui rend le développement de projet extrêmement flexible.
3. Gestionnaire de services
Le concept de gestionnaire de services vient de l'idée de programmation du "Modèle de localisateur de services". Cette idée préconise d'extraire chaque fonction indépendante du programme en tant que « service ». Chaque service peut être activé indépendamment. Ce n'est que lorsque le service est appelé que le programme lié au service sera démarré.
C'est le secret de l'amélioration des performances de ZF2. L'idée de ServiceLocator se reflète partout dans le processus de démarrage MVC de ZF2. Les appels aux modules de fonction sont extrêmement « avares », ce qui surprendra sûrement les développeurs qui ont déjà rencontré des problèmes. avec les performances de Zend.
4. Injection de dépendances
L'injection de dépendances est largement utilisée dans les frameworks Java traditionnels et peut efficacement découpler les applications à grande échelle. L'introduction de Di dans ZF2 a fait l'objet de considérations et de compromis répétés. Même après être entré dans la phase bêta, Di était toujours utilisé comme solution d'implémentation de base pour ZF2 et toute la configuration Mvc était basée sur Di. En fin de compte, afin d'éviter de tomber dans le bourbier de programmation de métadonnées (métaprogrammation) que Di peut provoquer, Di n'est utilisé que comme implémentation inférieure de ZF2 et ServiceManager est ajouté à la couche supérieure. Les développeurs ordinaires n'ont pas besoin d'être exposés au niveau Di lorsqu'ils utilisent ZF2. Cependant, cela n’empêche pas DI d’exister et de fonctionner comme un excellent composant PHP.
5. Programmation sociale
Le code de ZF2 est entièrement hébergé sur Github. Grâce à l'excellente conception de Github, n'importe qui peut facilement participer à la construction du projet ZF2 via fork, et même soumettre de nouvelles fonctions de module. L'auteur AlloVince a également aidé l'équipe Zend à corriger certains bugs et a constaté que l'équipe Zend répondait très rapidement (jamais plus de 24 heures) et prenait le temps de répondre sérieusement aux commentaires. Par conséquent, participer au projet ZF2 est un bon choix pour participer au projet open source PHP.