Frameworks PHP : Synthèse (3/4)

Dans le cadre d’une veille stratégique pour un de nos clients publics, nous avons étudié le sujet des frameworks PHP. Il s’agit de faire des préconisations pour aider à l’industrialisation de la filière de développement. L’article suivant constitue la 3ème partie avec une synthèse des frameworks CodeIgniter, Laravel, Symfony et Zend Framework.

1. Comparaison frameworks full-stack

Symfony

Zend

CodeIgniter

Laravel

Licence

MIT

New BSD

MIT

MIT

Détenteur des droits

Entreprise

Entreprise

Université

Communauté

Date de la dernière version

Mars 2016 (3.0.4)

Janvier 2016 (2.5.3)

Mars 2016 (3.0.6)

Avril 2016 (5.2.6)

Activité de développement

Élevé

Moyen

Moyen

Élevé

Popularité en France

Élevé

Moyen

Moyen

Moyen

Prise en main

Moyen

Moyen

Très facile

Facile

Accessibilité de la documentation

Élevé

Moyen

Élevé

Élevé

Architecture

Service

Service (récent)

Intégré

Service

Contrôleur et routage

Oui

Oui

Oui

Oui

Templates

Moteur intégré (Twig)

Oui

Oui

Moteur intégré (Blade)

Accès aux bases de données

Oui

Oui

Oui

Oui

Console

Oui

Oui

Oui

Oui

Tests

Oui

Oui

Oui

Oui

Validation et formulaires

Oui

Oui

Oui

Oui

Sécurité

Oui

Oui

Oui

Oui

ORM intégré

Doctrine

Doctrine

Doctrine

Datamapper

Eloquent

PSR-7 Middleware

Oui

En cours

Non

Oui

Conteneur de service

Oui

Oui

Non

Oui

Extensibilité avec Composer

Oui

Oui

Oui

Oui

Performances107

Moyen

Moyen

Très élevé

Moyen

Micro-framework

MicroKernel / Silex

Zend Expressive

Aucun

Lumen

Il existe peu de différence en termes de fonctionnalités d’un framework à un autre. Les composants ne sont cependant pas toujours les mêmes et l’approche de développement est différente. CodeIgniter et Laravel sont les plus simples à maîtriser. Le premier est stable et performant. Le deuxième est moderne, intuitif et extrêmement populaire. Le framework Zend est en cours de refonte complète dans la version 3 et nécessite d’être surveillé. Symfony qui est un framework polyvalent avec de nombreuses références et dispose d’une communauté très active en France. Les deux frameworks recommandés à ce stade sont Symfony et Laravel.

2. Comparaison micro-frameworks

Symfony Microkernel

Zend Expressive

Lumen (Laravel)

Licence

MIT

BSD

MIT

Détenteur des droits

Entreprise

Entreprise

Communauté

Date de la dernière version

Mars 2016 (3.0)

Janvier 2016 (1.0.0)

Janvier 2016 (5.2.0)

Activité de développement

Élevé

Moyen

Moyen

Popularité en France

Élevé

Moyen

Moyen

Prise en main

Facile

Facile

Facile

Accessibilité de la documentation

Élevé

Moyen

Élevé

Contrôleur et routage

Oui

Oui

Oui

Templates

Activable

Oui

Non
(à partir de la version 5.2108)

Accès aux bases de données

Activable

Oui

Oui

Console

Activable

À ajouter109

À ajouter110

Tests

Activable

Oui

Oui

Validation et formulaires

Activable

Oui

Oui

Sécurité

Activable

Oui

Oui via API JSON

ORM intégré

Activable

À ajouter111

Oui

PSR-7 Middleware

Oui

Oui

Oui

Conteneur de service

Activable

Oui

Non

Extensibilité avec Composer

Activable

Oui

Oui

Performances112

Variable

Élevé

Élevé

Montée en charge

Composants Symfony ou activation du Kernel standard

Composants Symfony

Migration vers Laravel

Chaque framework adopte une approche différente pour s’alléger. La modularité de Symfony permet de partir d’une version épurée et de choisir les composants à intégrer. Zend Expressive sorti récemment est en rupture avec la version full-stack actuelle et ne permet pas de faire une montée en version. Lumen quant à lui se veut particulière minimaliste et spécialisé en se focalisant sur les API JSON avec une migration facilitée à Laravel. Compte tenu des éléments précédents, nous pensons dans l’immédiat que le choix de Symfony offrira la flexibilité à l’Administration avec un produit unique qui pourra être décliné en plusieurs versions.

3. Comparaison globale

Micro-framework

Framework full-stack

Contexte de développement

Petites et moyennes applications

Polyvalent

Effort d’adaptation

Faible

Élevé

Fréquence des correctifs

Élevé

Élevé

Extensibilité

Facile

Facile

Prise en main

Facile

Moyen

Vitesse de développement

Élevé

Élevé

Contrôleur et routage

Oui (1)

Oui

Templates

Oui (1) (2)

Oui

Accès bases de données

Oui (1)

Oui

Console

Oui (1) (2) (3)

Oui

Tests

Oui (1)

Oui

Validation et formulaires

Oui (1)

Oui

Sécurité

Oui (1)

Oui

ORM intégré

Oui (1) (3)

Oui

PSR-7 Middleware

Oui (1)

Oui

Conteneur de service

Oui (1)

Oui

Extensibilité avec Composer

Oui (1)

Oui

Performances113

Élevé

Moyen

Montée en charge

Oui (3)

Oui

(1) Activable pour Symfony

(2) Sauf Lumen

(3) Sauf Zend Expressive

L’utilisation d’un framework PHP micro ou complet apportent des gains de temps et d’effort importants dans l’implémentation de fonctions standards comme le contrôle et le routage, l’administration et les tests et la sécurité. C’est une solution pérenne qui facilitera très certainement le quotidien des développeurs d’applications de plus en plus complexes. Le choix d’un micro-framework autour d’un nombre de composants réduit est une bonne introduction à l’architecture Modèle-Vue-Contrôle. L’industrialisation de l’application sera possible avec la possibilité de montée en fullstack à tout moment pour Symfony et Laravel.

Références

109https://xtreamwayz.com/blog/2016-02-07-zend-expressive-console-cli-commands     (site inaccessible)

110http://codrspace.com/MattWohler/creating-a-new-artisan-command-with-lumen/     (site inaccessible)

111https://xtreamwayz.com/blog/2015-12-12-setup-doctrine-for-zend-expressive     (site inaccessible)