Laravel vs Symfony - Major Differences

Laravel vs Symfony - Principales différences

html

Pour chaque projet, il faut décider quelle technologie utiliser. Pour le développement web, les entreprises choisissent le plus souvent d'utiliser des frameworks PHP. Mais lequel choisir ? Aujourd'hui, j'ai décidé de présenter les deux frameworks PHP les plus populaires : Symfony et Laravel, et donc de comparer leurs similarités et de démontrer leurs différences ainsi que leur utilité pour des types de projets spécifiques.

Vue d'ensemble des frameworks

 

Symfony

Laravel

Page du projet

https://symfony.com/

https://laravel.com/

Date de sortie

2011

2011

Version récente 

5.1.3 (1er mai 2020)

8.4.1 (10 novembre 2020)

Licence

Licence MIT

Licence MIT

Motif de conception

Basé sur MVC. Structure modulaire, code réutilisable.

Basé sur MVC. Certaines des dépendances disponibles dès le départ permettent de commencer rapidement.

Moteur de templates

Twig - utilise des filtres pour modifier les données.

Blade - capacité à insérer tout code PHP dans le corps du modèle.

Base de données

Doctrine ORM. Bases de données prises en charge par défaut:

  • Drizzle, 
  • MySQL, 
  • Oracle, 
  • PostgreSQL, 
  • SAP Sybase SQL Anywhere, 
  • SQLite, 
  • SQLServer.

Eloquent ORM. Bases de données prises en charge par défaut :

- MySQL, 

- PostgreSQL

- SQLite 

- SQLServer.

Idée principale

Conçu pour de grands projets avec une perspective à long terme en termes de développement.

Simplicité et rapidité du code à écrire.

Informations de base

Symfony est un framework sous licence open source PHP qui utilise le motif de conception de projet modèle-vue-contrôleur. Il est le plus souvent choisi pour les projets grands et complexes. Symfony 2 a été lancé en 2011 et cette année devrait être considérée comme le début du framework, aujourd'hui connu sous ce nom. Symfony 1 était un projet totalement différent, avec des hypothèses de base distinctes.

Date de sortie : 2011

Version stable récente : 5.1.3 (1er mai 2020)

https://symfony.com/

Laravel est un framework sous licence open source PHP qui utilise le motif de conception de projet modèle-vue-contrôleur. Initialement lancé en 2011, cependant, avec la version 4, sortie en 2013, l'intérêt pour le projet a considérablement augmenté. Laravel est actuellement le framework le plus populaire sur le marché. Ses auteurs indiquent que l'intuitivité, la simplicité et la rapidité du code écrit sont les plus grands atouts de ce framework.

Date de sortie : 9 juin 2011

Version stable récente : 8.4.1 (10 novembre 2020)

https://laravel.com/

image collée

Similarités

Les informations de base concernant ces frameworks révèlent déjà de nombreuses similitudes entre eux. Ce qui frappe d'abord, c'est le fait que les deux frameworks sont des solutions disponibles sous licence open source et utilisent le langage PHP. De plus, la possibilité de déployer le système avec des modules et composants supplémentaires ainsi qu'une conception multiplateforme sont des facteurs qui rendent Symfony et Laravel similaires.

Le support du travail lié aux bases de données est dans les deux cas similaire car les deux systèmes utilisent l'ORM (mapping objet-relationnel) - Doctrine dans le cas de Symfony et Eloquent dans le cas de Laravel.

À première vue, les deux frameworks peuvent sembler être presque comme des solutions jumelles, mais comme d'habitude, le diable est dans les détails.

Symfony - caractéristiques distinctives

Contrairement à Laravel, Symfony a été développé spécialement pour les projets à grande échelle, ce qui a influencé la plupart des décisions prises lors de sa conception. Si nous fournissons développement Symfony, chez Droptica nous travaillons généralement avec de grands projets ou des projets où Symfony est une technologie sous-jacente. Cela est dû au fait que Symfony est utilisé par de nombreux projets connus, y compris Drupal, PrestaShop, Magento ou comme base pour d'autres frameworks : juste pour mentionner Laravel, Yii ou CakePHP. Cela démontre sa polyvalence et sa flexibilité.

Symfony est développé comme une solution modulaire qui est composée d'éléments mutuellement indépendants (bundle). Ce sont des bundles de fichiers installables contenant déjà certaines fonctionnalités. Un bon exemple de bundle peut être une messagerie instantanée ou un système de paiement. Ce type de solution nous permet de rendre le code indépendant du système en cours d'écriture et d'utiliser les bundles créés pour d'autres projets.

L'avantage de Symfony, qui est souvent souligné, est sa performance. Et bien que je puisse librement défendre cette affirmation, il est bon de garder à l'esprit que la vitesse elle-même dépend des composants et des éléments de base que nous utilisons. Car il est difficile d'espérer une performance puissante lorsque les bundles utilisés sont mal conçus et fonctionnent simplement mal. La chose la plus simple à dire est que la performance de Symfony est la somme de ses performances individuelles – la performance de base est une base extrêmement efficace.

La communauté autour de Symfony est encore l'un des plus grands réseaux, donc résoudre des problèmes ou étendre des applications avec des add-ins développés par les utilisateurs est un travail vraiment agréable.

En tant que moteur de template, Symfony utilise Twig. Cette solution génère des fichiers de modèles avec l'extension .twig jusqu'au code PHP. C'est une solution largement connue et généralement utilisée que nous utilisons dans notre offre de services de développement PHP. La performance et la simplicité du code écrit est certainement un avantage. L'inconvénient, cependant, est le fait que twig ne permet pas d'injecter le code PHP - donc nous devons utiliser des filtres à la place.

{{ 'Texte en majuscules'|upper }}

Nous ne sommes cependant pas limités à utiliser uniquement les filtres développés par les auteurs de Twig – nous pouvons créer nous-mêmes ces filtres et en augmenter le nombre. Exemple de fichier Twig :





        Fichier d'exemple Twig

    

    

        

{{ page_title }}

        {% if user.isLoggedIn %}             

Bonjour {{ user.name }}!

        {% endif %}              

Laravel - caractéristiques distinctives

La première et la plus importante chose à savoir sur Laravel est que ce framework est développé sur des composants Symfony. Laravel utilise également Symfony comme base ; cependant, il l'enrichit avec sa logique et sa vision pour écrire des logiciels en langage PHP. Le principe de base de Laravel est l'intuitivité et la rapidité d'écriture du code. Les auteurs présument qu'en tenant compte de la demande actuelle du marché pour des solutions de programmation, le temps et les ressources devraient jouer un rôle clé dans le projet en cours de création. Bien que cette pensée puisse sembler juste, beaucoup de gens pointent du doigt la miopie de cette approche, et donc Laravel est souvent associé à des projets plus petits "à court terme". Pour ne pas vous effrayer dès le départ, je voudrais dire que même s'il y a un élément de vérité là-dedans, tout cela, en fait, dépend des personnes qui utilisent la solution et comment elles exploitent son potentiel. Nos développeurs Laravel sont heureux d'utiliser la vitesse à leur avantage, mais prennent aussi le temps d'architecturer des solutions modulaires, robustes et pérennes.

La logique, comme déjà mentionnée, frappe juste après l'installation de Laravel. Le framework nous accueille dès le début avec des dépendances prêtes et un environnement totalement prêt à l'emploi. Contrairement à Symfony, pour ceux qui ne souhaitent pas tout configurer dès le début par eux-mêmes, Laravel fournit certains outils nécessaires au travail. Déjà mentionné Eloquent ORM ou vue.js peut être l'un des exemples que nous obtenons dès le départ. Pour les débutants ou ceux qui apprécient leur temps, il peut être plus fluide et rapide de pénétrer dans le monde de la programmation, comparé à Symfony. Une telle solution a aussi quelques inconvénients, car très probablement, nous n'utiliserons pas toutes les options que Laravel nous offre dès le départ et cela signifie maintenir beaucoup de code inutile dans le projet.

Les méthodes magiques peuvent aussi être un élément qui "séduit" beaucoup de gens lors du choix du bon framework pour leurs besoins. En bref : elles assurent la rapidité d'écriture du code sans avoir besoin de créer des lignes de code complexes et compliquées. Elles nous aident à nous concentrer davantage sur la logique de performance d'un projet donné plutôt que sur le code lui-même et sa correction.

Une autre fonctionnalité très utile de Laravel et la fonctionnalité que nous obtenons dès le départ est le système d'autorisation qui est si crucial pour le développement web. Contrairement à Symfony, ce framework est déjà équipé d'un système supportant l'autorisation, et la configuration de notre côté est limitée à la configuration de la base de données lors de la migration.

Contrairement à Symfony, Laravel utilise le moteur Blade comme moteur de modèle. Cependant, c'est une question discutable car, à mon avis, c'est une meilleure solution que Twig. À un niveau de base, les deux solutions sont assez similaires en termes de fonctionnement ; cependant, ce qui distingue Blade, c'est la capacité d'insérer le code directement dans le fichier de modèle. Cette petite différence rend le travail avec les modèles considérablement supérieur.

{{ strtoupper('Texte en majuscules') }}

Exemple de fichier Blade :





        Fichier d'exemple Blade

    

    

        

{{ $page_title }}

        {% if $user->isLoggedIn() %}             

Bonjour {{ $user->name }}!

        {% endif %}              

Résumé

Le choix d'un framework approprié n'est jamais facile. J'espère que mon texte pourra, au moins partiellement, vous aider à comprendre les principales différences entre les deux solutions PHP les plus populaires. Et je les appelle des "principales" différences délibérément car le nombre de différences mineures serait suffisant pour écrire au moins une série de livres. Les deux frameworks ont été conçus avec une fin différente en tête et pour des raisons différentes. Je vous laisse la tâche de choisir le bon framework, bien que, quoi que vous décidiez, je suis sûr que vous serez satisfait.

3. Best practices for software development teams