Ah, la guerre des frameworks PHP. D’un côté, Symfony, le vieux sage qui a tout vu, tout codé, et qui vous regarde avec mépris quand vous osez parler de @Route sans préciser le format YAML. De l’autre, Laravel, le petit nouveau qui a piqué les meilleurs jouets de Symfony, mais qui les a emballés dans du papier cadeau avec un smiley dessus. Et pourtant, malgré un routing qui fait pleurer les benchmarks, Laravel reste le chouchou des devs. Pourquoi ? Parce que la tech, parfois, c’est comme la vie : ce qui compte, c’est pas la vitesse, c’est le style.
Symfony : le couteau suisse qui vous demande un doctorat en configuration
Symfony, c’est le framework qui vous fait sentir comme un architecte de la NASA à chaque fois que vous voulez afficher une page 404. Besoin d’un EventDispatcher ? Parfait, mais d’abord, il faut comprendre les EventSubscriber, les EventListener, et pourquoi diable votre kernel.terminate ne se déclenche pas comme prévu. Symfony, c’est puissant, modulaire, et surtout, c’est flexible. Tellement flexible que vous pouvez passer trois jours à configurer un truc qui, avec Laravel, prendrait trois lignes.
Le routing ? Un chef-d’œuvre de précision. Vous voulez une route avec des paramètres optionnels, des contraintes, et une redirection conditionnelle ? Symfony vous offre ça avec la grâce d’un ballet russe. Mais bon, si vous avez juste besoin d’une route pour afficher un formulaire de contact, préparez-vous à écrire un roman en YAML (ou en XML, si vous aimez souffrir).
Et puis, il y a la documentation. Symfony, c’est comme un manuel d’instructions pour une machine à laver écrite par un ingénieur allemand : tout y est, mais bon courage pour trouver la page qui vous explique comment lancer un cycle court.
Laravel : le framework qui a volé les composants de Symfony (et c’est très bien comme ça)
Laravel, c’est un peu le framework qui a regardé Symfony et s’est dit : « Ouais, mais moi, je vais faire pareil, mais en plus simple. » Et devinez quoi ? Ça marche. Laravel utilise une bonne partie des composants Symfony (HttpFoundation, Console, EventDispatcher, etc.), mais il les a enrobés dans une syntaxe qui ne vous donne pas envie de vous arracher les cheveux.
Prenez le routing, par exemple. Oui, c’est lent. Oui, c’est moins optimisé que Symfony. Mais est-ce que ça vous empêche de dormir ? Non, parce que vous écrivez ça :
Route::get('/contact', function () {
return view('contact');
});
Et hop, c’est fait. Pas besoin de créer un contrôleur si vous n’en avez pas envie, pas besoin de configurer un fichier YAML, pas besoin de prier pour que votre @Route soit bien parsé. Laravel, c’est le framework qui vous dit : « Détends-toi, on verra les optimisations plus tard. » Et c’est ça, le génie.
Mais Laravel, ce n’est pas que du sucre syntaxique. C’est aussi un écosystème qui a pensé à tout :
- Eloquent : l’ORM qui vous fait oublier que SQL existe (même si, techniquement, il génère du SQL).
- Blade : un moteur de templates qui ne vous force pas à écrire du PHP dans du HTML dans du PHP.
- Artisan : la CLI qui vous fait sentir comme un magicien, même quand vous générez une migration pour la 15ème fois.
- Laravel Forge et Envoyer : des outils pour déployer vos apps sans avoir à toucher à un serveur (parce que, soyons honnêtes, personne n’aime ça).
Et puis, il y a la communauté. Laravel, c’est le framework qui a réussi à rendre le développement PHP cool. Les tutos sont clairs, les packages sont nombreux, et les devs sont sympas (enfin, la plupart). Symfony, c’est un peu comme une réunion de famille où tout le monde parle en acronymes : ça fait sérieux, mais c’est chiant à mourir.
Le routing de Laravel : lent, mais tellement pratique qu’on lui pardonne
Bon, soyons clairs : le routing de Laravel est lent. Vraiment lent. Si vous avez une app avec 500 routes, Symfony va vous rire au nez. Mais voici la question : est-ce que vous avez vraiment une app avec 500 routes ? Et même si c’est le cas, est-ce que le temps que vous gagnez à écrire Route::resource('posts', PostController::class) au lieu de configurer manuellement chaque route ne compense pas largement les quelques millisecondes de latence ?
Laravel a fait un choix : privilégier la productivité à la performance pure. Et c’est un choix assumé. Parce que, au final, la plupart des apps n’ont pas besoin d’être optimisées à la milliseconde près. Ce qui compte, c’est que vous puissiez livrer vite, sans vous prendre la tête. Et ça, Laravel le fait mieux que personne.
Alors oui, Symfony est plus rapide. Oui, Symfony est plus modulaire. Oui, Symfony est plus « professionnel ». Mais Laravel, c’est le framework qui vous permet de coder sans avoir l’impression de passer un examen à chaque commit. Et ça, ça n’a pas de prix.
Conclusion : Symfony pour les puristes, Laravel pour les malins
Si vous aimez passer des heures à configurer des fichiers YAML, à optimiser des requêtes SQL à la main, et à vous sentir comme un génie incompris, Symfony est fait pour vous. Mais si vous préférez coder vite, sans vous prendre la tête, et avec le sourire, Laravel est clairement le meilleur choix.
Laravel a volé les composants de Symfony, mais il a ajouté quelque chose de bien plus précieux : une philosophie. Celle qui dit que le développement, ça doit rester fun. Et ça, même le routing le plus lent du monde ne peut pas vous l’enlever.