PHP Framework
La question que ce pose beaucoup de personne lorsque vous avez choisi comme langage pHp.
Il existe plusieurs Framework je vais vous présenter ceux que j’utilise mais les autres sont tout aussi valable en fonction de votre besoin. Symfony et Laravel sont très complet d’autre sont plus simple à mètre en place et pour des petites équipes.
Comparaison des deux Framework.
Les moteurs HTML Twig vs Blade
- Lavravel propose d’écrire des fichiers .blade.php qui sont des fichiers PHP avec quelques méthodes supplémentaires pour vous simplifier la vie tel que
@foreach
ou@extends
. Le code à l’intérieur des balises Bande doit avant tout être du code PHP - Symfony utilise le moteur de template Twig qui lui propose une syntaxe complètement différente du PHP. par exemple l’objet item.name au lient de $item.name qu’il est possible d’étendre grâce à l’utilisation d’extensions. (Vous ne pouvez pas faire appel à n’importe qu’elle class PHP depuis le template)
Twig est une moteur plus puissant mais est aussi contraignant en important l’utilisation d’extension pour rajouter des fonctionna litées. Cette aporche rand aussi les templates plus simplement éditable par les développeur front-end (la syntaxe est plus simple et ressemble à du JavaScript).
Balde est plus facile à prendre en main car permet d’écrire du PHP, avec le risque parfois de voir des appels aux models directement dans les vues.
ORM Doctrine vs Eloquent
- Laravel utilise par défaut Eloquent qui est un ORM basé sur Active Record où le Model est à la fois responsable de représenter une entité, mais aussi de gérer la persistance des informations
- Symfony utilise par défaut Doctrine qui est ORM basé sur le principe du Data Mapper où on sépare la notion d’entité (objet représentant les données), de Repository (objet servant à manipuler les entités) et de Manager (objet responsable de la persistance)
Eloquent a une syntaxe plus coutre et logique qui semple plus naturelle mais cette apparente simplicité peut rapidement mener à des « fat models » car toute la logique va être stocké au même endroit.
Doctrine permet naturellement une meilleur séparation mais s’avérera relativement verbeux pour des cas simples.
La gestion des formulaires FormBuilder vs FormRequest
- Symfony permet de créer une class qui va gérer les formulaires, depuis leur création jusqu’au traitement des données. Le formulaire sera me capable d’hydrater une entitée à partir des données reçues
- Laravel propose simplement un type de
Request
particulier permettant de vérifier et de traiter les données reçues lors d’un requête. il faudra alors manuellement traiter les données et les modifier me modèle en fonction
Ajouter de module Bundle vs ServiceProvider
- Symfony est connu pour disposer d’un système de Bundle permettant l’ajout de fonctionnalitées supplémentaire simplement avec une bonne séparation du code
- Laravel ne dispose pas d’un tel système mais il est possible de limiter avec utilisation les
ServiceProviders
qui disposent d’une méthodeboot()
. il est ainsi possible de créer une librairie dans un namespace séparer et d’inclure une logique dès l’importation du ServiceProvider
L’intégration de module par composer fonctionne dans les deux Framework.
Au final
Laravel se focalise sur la simplicité du code pour le développeur ce qui peut parfois amener à de mauvaises pratiques lorsque l’on veut prendre des raccourcis. Mais avec un peu de rigueur vous aurez un code propre et une bonne organisation de code. L’utilisation d’un Service Container permet de gérer l’injection de dépendance et ainsi s’assurer que le code reste facilement testable.
Symfony impose plus de rigueur et est plus complexe à appréhender. Il possède une courbe d’apprentissage un peu plus longue mais a l’avantage d’imposer plus de restriction. Une fois passé la phase d’apprentissage et la découvert des différents Bundle fournis par le Framework est aussi productif qu’avec Laravel.
Le choix est en fonction de vos affinité vis à vis de la méthode utilisée.