web-dev-qa-db-fra.com

La différence entre Symfony et Silex

J'aimerais essayer Silex mais j'ai quelques questions.

Je sais utiliser Symfony2 et je voudrais savoir si Silex est très différent de Symfony ou si c'est la même chose (même opération, même code ...)?

De plus, Silex est recommandé pour les petits projets PHP et Symfony pour les projets moyens ou grands, c'est vrai?

36
Alex L.

Quelques points à noter:

  • Silex est basé sur les composants Symfony2, tout comme le framework Symfony2. En tant que tel, il peut être considéré comme une interface utilisateur alternative aux composants (l'utilisateur étant un développeur Web).
  • Puisqu'ils utilisent la même base, la migration entre eux devrait être relativement facile.
  • Tout comme Symfony2, Silex est principalement un framework de contrôleur. Il vous fournit une certaine structure, mais les parties du modèle et de la vue sont gérées par des bibliothèques tierces (telles que Twig ou Doctrine).
  • Étant donné que votre logique métier ne devrait de toute façon pas être dans vos contrôleurs, si vous séparez ce code et gardez vos contrôleurs légers, le facteur limitant en termes de taille de projet ne sera que la quantité de routes que vous avez.

Cela dit, Silex ne vous donnera pas les bundles de Symfony2.

47
igorw

Voici quelques réflexions intéressantes sur le moment d'utiliser Silex (en particulier dans les commentaires): https://web.archive.org/web/20160131151109/http://www.testically.org/2011/10/11/11/y-a-t-il-une-situation-spécifique-quand-utiliser-un-php-micro-framework-like-silex /

Silex lui-même est assez dépouillé, ce qui signifie que si vous voulez plus que du routage et des tests, vous devrez ajouter des fonctionnalités spécifiques (DB, Twig ...) sous forme de services. Je recommande de jetez un oeil à quelques plaques prêtes à l'emploi qui vous fournissent ceci: https://github.com/lyrixx/Silex-Kitchen-Edition ou https://github.com/ivoba/ superleansilexplate (c'est le mien :))

Un autre point est que Silex a une empreinte probablement plus légère que Symfony2, donc si vous avez besoin d'un site plus petit et plus rapide, Silex mérite une considération.

15
ivoba

(MISE À JOUR) Depuis Symfony 2.8 Vous pouvez utiliser symfony 2 comme microframework avec un contrôleur de micro noyau. Voir la courte description ici: symfony.com/blog/new-in-symfony-2-8-symfony-as-a-microframework . Maintenant, Symfony nous donne plus de contrôle sur la structure et l'architecture. Bonne alternative à Silex si vous préférez le style Symfony 2.

Comparaison de Silex à Symfony avant la version 2.8

Le microframe Silex est basé sur Symfony mais ce n'est pas exactement la même chose. L'utilisation d'un framework full-stack tel que Symfony pour un petit projet est tout simplement en train de surcharger le projet.

Dans un microframework, vous avez plus de flexibilité pour choisir les outils que vous souhaitez utiliser. Vous pouvez prendre plus de décisions sur l'architecture et la logique des applications. Dans un framework full-stack avec une certaine extension, vous auriez une architecture et une logique déjà prédéfinies avec des restrictions et des limitations à sa configuration.

Silex a été conçu pour construire l'outil plutôt que d'obtenir les outils dont vous pourriez ne pas avoir besoin. Je dirais que pour les petits projets dans Symfony, vous devrez supprimer des fonctionnalités - si vous étiez dans Silex, vous devriez les ajouter.

Il n'est pas vrai non plus que Silex ne soit pas adapté aux grands projets. Silex peut être utilisé avec succès pour des projets plus importants, mais n'oubliez pas que vous devrez créer vos outils pour répondre à vos besoins (si vous avez besoin de personnaliser l'architecture et la logique - c'est peut-être la bonne façon de procéder). En dehors de cela, j'envisagerais d'utiliser Symfony à la place, car Symfony dispose déjà de nombreux outils prêts à l'emploi.

Silex dependency injection

Gardez à l'esprit que: Silex limitations

Pour conclure, Silex est bon pour les petites applications et pour celles-ci, il peut sûrement remplacer Symfony. Silex peut également être utilisé pour des projets plus importants (mais pour des applications plus grandes, je recommanderais plutôt d'utiliser un framework full-stack, comme Symfony).

Référence pour les diapositives à: http://www.slideshare.net/dustin.whittle/silex-from-micro-to-full-stack . Si vous en avez envie, allez-y et lisez-en plus sur le cadre Silex.

Je recommande également de regarder cette introduction comparant Silex à Symfony: https://www.youtube.com/watch?v=RDVtnsoOysE .

Encore une fois, quelques Pro pour utiliser Silex provenant de personnes qui l'utilisent réellement: https://www.youtube.com/watch?v=OJcdHGJFfL

8
DevWL

Silex est bon pour les petits projets, mais il peut également être utilisé pour les grands projets. Ce que j'aime le plus de Silex, c'est que j'ai un contrôle total sur la structure de mon projet mais c'est ma responsabilité si mon projet est bien organisé ou non.
Je le recommande également par rapport à symfony si comme moi, vous avez déplacé votre logique d'application côté client à l'aide d'un framework JS. Pour moi, il semble exagéré d'utiliser symfony uniquement pour répondre à quelques demandes json.

7
olanod

Silex est basé sur les composants indépendants de Symfony2 et n'est pas vraiment considéré comme un cadre d'application Web à pile complète comme Symfony. Vous ne devriez l'utiliser que pour de très petits projets qui ne nécessitent que quelques fichiers, ou vous le dépasserez assez rapidement.

5
Lusitanian

Au moment où j'écris ceci, Silex est en mode maintenance et c'est fin de vie survenu dans Juin 2018.

Ce qui signifie que vous ne devriez plus l'utiliser pour de nouveaux projets.

Ils vous recommandent d'utiliser Symfony 4 à la place.

Silex était vraiment bon et rapide (peut-être plus rapide que symfony 4 pour les demandes/exigences simples), mais SF4 peut apporter une nouvelle pile et des avantages à nos applications.

Mise à jour: Cependant, dans toutes mes tentatives de migration de Silex vers Symfony 4, les services simples ont pris 4x fois plus pour répondre, peu importe ce que je fais. Silex semble faire un bien meilleur travail pour les microservices simples.

1
Ricardo Martins

Silex est un excellent cadre pour les petites et grandes applications. La structuration du projet est de votre responsabilité chez Silex. Au fur et à mesure que le projet s'agrandit, vous pouvez bien y intégrer des composants symfony bien que la documentation du fournisseur symfony ne soit pas très bonne, en particulier pour le composant de sécurité symfony.

Silex est idéal pour les projets de prototypage. Si vous savez que vous utiliserez la plupart des composants symfony, optez pour symfony car vous finirez par intégrer presque tous les composants symfony dans silex.

Dans mon cas, j'avais besoin de vitesse dès la sortie de l'emballage et le silex m'a fourni la vitesse et bien que j'utilise la plupart des composants symfony, c'est beaucoup plus rapide que symfony hors de la boîte.

1
sonam