<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=410661216031617&amp;ev=PageView&amp;noscript=1">

Le 24 octobre dernier, les équipes PHP d’Adimeo assistaient comme chaque année au Forum PHP. L’occasion de retrouver des têtes connues mais aussi de bénéficier de retours d’expériences comme celui de Olivier Alain (lead developer chez Synolia) sur l'utilisation de Sylius pour mener à bien un projet de site e-commerce.

La petite histoire de Sylius

Tout a commencé en 2010. Sylius est alors développé pour la création d’un site de vente en ligne de produits cosmétiques en Pologne par Paweł Jędrzejewski.

Très vite, des composants en sont extraits afin de servir de briques réutilisables distribuées en open-source pour la création d’autres projets e-commerce.

C’est ainsi qu’une agence de développement web du même nom nait en 2014 proposant principalement des solutions e-commerce basées sur Sylius.

L’année 2017 marque un tournant pour le projet Sylius. L’agence de développement se transforme en société éditrice pour se concentrer pleinement sur l’évolution de la solution. En septembre de la même année la version 1.0 est alors publiée.

Depuis cette date, de nouvelles versions mineures, apportant leurs lots de nouvelles fonctionnalités, sont publiées environ tous les trois mois.

la-petite-histoire-de-sylius


Vue d'ensemble de Sylius

Sylius se définit comme étant un framework e-commerce par opposition aux autres solutions e-commerce qui sont pour leur part des CMS (Content Management System).

C’est dans cette optique que la solution tient à remplir les promesses suivantes :

  • Couvrir 80 % des besoins de solution e-commerce,
  • Garantir un code de qualité reposant sur les principes SOLID avec une haute couverture de tests,
  • Fournir une solution élégante pour le confort des développeurs,
  • Assurer la “Backward Compatibility Promise” (promesse de rétrocompatibilité) en suivant le [Semantic Versioning].

Pour ce qui est de l’architecture, Sylius repose sur Symfony, un framework de développement d’application PHP mondialement reconnu.

C’est sans aucun doute un avantage puisque cela permet à Sylius de tirer parti de tout l’écosystème gravitant autour de ce framework avec notamment :

  • les différents bundles, qui sont des intégrations de librairie PHP dans Symfony,
  • la communauté,
  • l’évolution constante du framework,
  • les corrections de failles de sécurité,
  • et bien d’autres encore !

Sylius utilise par ailleurs un découpage similaire à celui de Symfony avec :

  • des composants standalone, utilisable dans n’importe quelle application PHP,
  • des bundles, qui sont plus au niveau que les composants et permettant leur intégration simplifiée dans n’importe quel projet Symfony,
  • et le Core de Sylius, qui fédère ces différentes briques.

Ce core est lui-même décomposé en trois parties qui sont activables et désactivables au besoin :

  • un back-office,
  • une API,
  • un shop.

sylius-core

La modularité que nous offre Sylius est l’un des gros points forts du framework, nous permettant d’adapter nos besoins aux différents projets sur lesquels nous travaillons.

 

Extension, customisation et fonctionnalités

Une autre force de Sylius réside dans sa facilité à être étendu de par sa nature de framework. Sans oublier qu’en se basant sur Symfony, Sylius en tire toute la puissance pour surcharger et étendre les fonctionnalités existantes.

Parmi les sujets évoqués par Olivier, on peut citer :

Le ResourceBundle

Ce bundle se retrouve au cœur de Sylius. Il permet notamment de générer des CRUD (Create Read Update Delete) simples à partir de nos entités. Les formats de retour étant toujours formatés de la même manière, ces CRUDs pourront être facilement utilisés par les différentes couches de notre application (principalement l’API et le Shop). Ce composant peut être entendu avec par exemple l’utilisation de DTO (Data Transfer Object) pour gérer nos besoins les plus complexes.

Les FormExtension

Sylius nous fournit une base de quelques formulaires déjà entièrement construits comme le classique formulaire de contact. Il est très facile de le compléter grâce au mécanisme appelé FormExtension fourni par Symfony.

Sylius utilisant le concept de Defensive Programing, les classes définissant les formulaires sont déclarées “finales” et il est considéré comme étant une bonne pratique de programmation de passer par ce type d'extension plutôt que d’étendre directement la classe parent.

Le front-office

Concernant le front-office, un système de thème existe. Sylius supporte deux thèmes officiels : l’un basé sur Semantic Ui (par défaut) et l’autre sur Bootstrap. Il est également possible de développer son propre thème. On regrette cependant qu’il n’y ait pas (encore) de Marketplace pour les thèmes de Sylius.

Il est toutefois simple de surcharger les différents templates des thèmes avec le même système que Symfony avec Twig. De plus, des événements sont déclenchés un peu partout dans la vue afin de permettre d’y injecter du contenu sans même avoir à la surcharger !

Une autre approche serait d’utiliser uniquement la couche API fournie par Sylius afin de l’interroger avec, par exemple, une SPA (Single Page Application) pour gérer toute la partie front de notre site e-commerce.

Les machines à état

Ce composant est responsable des changements d’état à travers notre application, avec par exemple, le statut d’une commande qui peut passer de “en cours”,  à “valider”, puis “expédier”. Ces changements d’états sont souvent représentés sous forme de graphe. On parle aussi de workflow.

sylius-workflow-shipping

Comme vous pouvez le voir sur ce schéma, la machine à état pour la livraison fournie par Sylius a pu être étendue et complétée pour répondre aux besoins particuliers du projet présenté par Olivier.

Pour des raisons historiques, Sylius utilise la librairie [winzou/StateMachineBundle] pour gérer ses workflows. On peut regretter qu’il n’utilise pas le composant workflow de Symfony qui n’existait pas encore au moment du développement. Ce changement de composants devrait arriver prochainement.

 

Les plugins

Nous savons que Sylius se propose de résoudre 80 % des problématiques liées au e-commerce. Qu’en est-il des 20 % restants ? Et bien pour ceux-là, le framework est doté d’un système de plugins.

Les plugins sont basés sur les bundles de Symfony tout en étant complétés par d’autres mécanismes d’extensions fournis par Sylius. Ainsi, grâce aux plugins, on peut par exemple ajouter des rubriques au back-office.

Pour comprendre l’intérêt d’un tel plugin, on peut prendre l’exemple de la gestion de contenu. L’équipe de Sylius considère que cette fonctionnalité est trop précise pour faire partie du Core de la solution. C’est pourquoi il existe une alternative sous forme de plugin.

Actuellement, il y a environ 35 plugins officiels, c’est-à-dire, approuvés par l’équipe, mais on en compte presqu’une centaine sur [packagist]. Il faut cependant penser à vérifier la qualité de ces derniers si l’on décide d’utiliser un plugin non officiel.

 

Sylius est un outil qui semble très intéressant au premier abord. On pourrait lui reprocher son manque de fonctionnalités, comme un Marketplace pour les thèmes, mais le projet reste relativement jeune et nécessite encore un peu de temps et d’exposition avant de devenir un incontournable dans le monde du e-commerce.

En étant défini comme un framework e-commerce, il semble idéal pour des projets qui nécessitent des développements plus poussés et sur mesure, là où ses concurrents, les CMS, brillent moins.

Au vu de la rapide évolution de la solution, tant au niveau des fonctionnalités que de l’adoption, nous pensons que Sylius nous réserve de belles surprises pour l’avenir.

 

Afin de compléter cet article, n’hésitez pas à visionner la conférence d’Oliver Allain :

Publié par Florian Hermann
Retrouvez moi sur :

Un conseil, un projet, un devis ?
Nous repondons a toutes vos questions !

N'hésitez pas à nous contacter pour plus d'informations

Nous contacter

Sur les mêmes sujets