Pourquoi apprendre Symfony en 2017?

Comprendre comment évolue le projet Symfony et pourquoi il est toujours intéressant de s’investir dessus, mais différemment.

En 2011, quand j’ai commencé mes études de reconversion en informatique j’ai appris le PHP en faisant du symfony 1.3 et j’ai réalisé mon tout premier projet étudiant sur la beta de Symfony 2.

A l’époque, on passait d’un framework full stack super intégré avec back office fourni à un framework qui ressemblait plus à ce qu’on retrouvait dans la communauté Java: d’ailleurs de nombreux composants de Symfony2 étaient fortement inspirés de JEE.

PHP 5.3 venait de sortir, et avec lui la possibilité de commencer à concevoir en orienté objet correctement. Fabien Potencier a finalement imposé ce pré-requis (initialement, Symfony2 nécessitait PHP 5.2.7), puis Composer fut utilisé et la documentation était vraiment complète et en anglais.

Zend framework 1 se cassait la figure et plus aucune startup ne se lançait dessus (en France) quand au contraire on voyait apparaître quelques offres de développeur Symfony dans les plus belles boîtes de Paris. Quelques années plus tard, personne ne pouvait concevoir d’utiliser autre chose que du Symfony pour faire un projet PHP.

De gros projets Open Source ont commencé à migrer sur des composants Symfony: s’il n’a pas été le premier, SensioLabs a beaucoup parlé de Drupal8 car c’est l’un des plus gros CMS du marché. EzPublish, PHPBB, PrestaShop et beaucoup d’autres ont suivi, certains avec une approche full stack framework et d’autres en incorporant seulement quelques briques logicielles.

Un écosystème riche et mature

L’écosystème Symfony — image appartenant au compte Twitter Symfony News

L’écosystème Symfony s’est enrichi de solutions toujours plus spécialisées et répondant à des problèmes business concrets là où le framework Standard Edition (dite “full edition” ou encore “meta-package”) n’a pour sa part aucun scope. Sont apparus parmi le plus célèbres:

Toutes ces solutions sont extrêmement populaires et nécessitent de bons pré-requis en Symfony.

En 2017, quelle sera donc la place de Symfony Standard Edition dans l’écosystème? Fabien Potencier a décidé qu’il n’y aurait plus de Standard Edition après la 3.4.

Souhaitons la bienvenue à Symfony Flex!

En effet, le créateur de Symfony prévoit en remplacement un plugin composer appelé Flex qui facilite la création d’applications Symfony.

Le développeur aura la responsabilité de choisir et d’ajouter les dépendances dont il a/aura besoin. Le système fonctionne selon un principe de “recette/template” où l’on décrit à l’aide de fichiers YAML ce que Flex devra faire: que ce soit ajouter une dépendance, configurer et enregistrer un bundle ou encore créer un dossier par exemple.

Flex est fourni avec deux sources de “recettes”: une source officielle validée par SensioLabs et une source communautaire où chacun pourra ajouter ses propres recettes et les rendre disponible à tous.

Pour faire simple, imaginons que vous vouliez réaliser une API RESTful en 2017 à l’aide de Flex: l’idéal serait d’utiliser Api Platform. Et bien Api Platform est disponible via Flex donc vous n’auriez qu’une commande à exécuter pour arriver à une application complète qui fonctionne.

Je dois avouer que cette approche me plaît beaucoup et qu’elle conforte le point de vue que je défendais depuis quelques années: un projet Symfony non pas centré sur son framework mais sur la maintenance de briques logicielles de très haute qualité et bien documentées. Peut-être aura-t-il fallu attendre le succès relatif de Symfony 3 et la progression de popularité de solutions comme Akeneo pour que cette prise de conscience se fasse, mais je crois (j’en suis convaincu même!) que la Core team Symfony part dans la bonne direction.

Si vous recherchez plus d’informations sur Flex, il n’y a pas encore de documentation officielle mais Fabien Potencier a réalisé une série d’articles sur le projet que je vous encourage à lire et expérimenter puisque le plugin composer est compatible avec Symfony 3.3 et utilisable indépendamment de la sortie de Symfony 4 ;)

Certes! Mais pourquoi apprendre Symfony en 2017 alors?

En 2017, il ne faut pas (forcément) apprendre le framework Symfony, il faut apprendre et comprendre l’écosystème Symfony.

  • Il faut comprendre comment une application Symfony lit une requête HTTP et retourne une réponse;
  • Il faut comprendre comment une application Symfony construit et rend disponible des objets (on dit “services”);
  • Il faut comprendre comment une application Symfony dispatche et écoute des événements tout au long du cycle de vie de l’application, et comment écouter et créer ses propres événements;

Si vous maîtrisez ces notions, je vous assure que vous serez rapidement à l’aise avec Api Platform, Akeneo, Marello, Sylius, Drupal8, Laravel et le framework Symfony Standard Edition.

Et les composants dans tout ça?

Je suis un très gros fan des composants Symfony: ils sont maintenus par une énorme communauté, très bien documentés et évoluent régulièrement.

L’apprentissage ou l’utilisation de tel ou tel composant dépend évidemment du projet. Voici “ma” liste des composants les plus utiles:

  • Le composant Console: fournit une console complète avec gestion des arguments et options, indispensable pour du PHP en mode CLI;
  • Les composants Debug et VarDumper: fournit une stack trace en cas d’erreur beaucoup plus facile à lire, et la fonction dump qui est un var_dump amélioré;
  • Les composants Finder et Filesystem: fournissent une API objet pour rechercher et manipuler des dossiers et des fichiers;
  • Les composants de type Polyfill-*: permettent à l’application de pouvoir utiliser des fonctions non disponibles, que ce soit à cause de la version PHP ou de l’absence de certaines extensions;

Tous ces composants fonctionnent évidemment en “standalone” et ils sont utilisés dans la plupart des gros projets PHP.

Continuez donc à apprendre et à vous investir dans l’écosystème: Symfony (framework) est mort, longue vie au projet Symfony!

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.