Sylius12 min

Sylius et Symfony 7 : compatibilite, nouveautes et migration

Par Pierre-Arthur Demengel
SyliusSymfony 7MigrationPHPCompatibilite

Sylius 2.x marque un virage majeur en embrassant pleinement Symfony 7. Fini les librairies tierces la ou Symfony fournit une solution native. Voici ce que ca change et comment migrer.

Matrice de compatibilite

SyliusSymfony 5.4Symfony 6.4Symfony 7.xPHP minimum
1.12 - 1.14OuiOuiNonPHP 8.0
2.0NonOuiOuiPHP 8.2
2.x (latest)NonOuiOuiPHP 8.3

Ce qui change avec Symfony 7

1. Symfony Workflow remplace winzou state machine

C'est le changement le plus impactant. Les machines a etats (commande, paiement, expedition) passent de winzou/state-machine a symfony/workflow :

# Avant (winzou)
winzou_state_machine:
  sylius_order:
    class: Sylius\Component\Core\Model\Order
    transitions:
      create:
        from: [cart]
        to: new

# Apres (Symfony Workflow)
framework:
  workflows:
    sylius_order:
      type: state_machine
      marking_store:
        type: method
        property: state
      places:
        - cart
        - new
        - fulfilled
      transitions:
        create:
          from: cart
          to: new

2. symfony/mailer remplace SwiftMailer

# Avant
swiftmailer:
  transport: '%env(MAILER_URL)%'

# Apres
framework:
  mailer:
    dsn: '%env(MAILER_DSN)%'

3. Attributs PHP pour Doctrine

Les annotations Doctrine en commentaires sont remplacees par des attributs PHP 8+ :

// Avant
/** @ORM\Entity */
/** @ORM\Column(type="string", length=255) */

// Apres
#[ORM\Entity]
#[ORM\Column(type: 'string', length: 255)]

4. Symfony UX pour le frontend

Sylius 2.x utilise Stimulus et Turbo (via Symfony UX) pour les interactions JavaScript, remplacant jQuery et les scripts custom de Semantic UI.

Etapes de migration vers Symfony 7

  1. Mettez a jour PHP vers 8.3 minimum
  2. Passez a Sylius 2.x (prerequis obligatoire)
  3. Mettez a jour composer.json : changez "symfony/*": "^6.4" en "^7.0"
  4. Corrigez les deprecations : Symfony 7 supprime tout ce qui etait deprecated dans 6.x
  5. Testez exhaustivement : lancez votre suite de tests et testez manuellement le checkout
# Identifier les deprecations avant la migration
composer require symfony/deprecation-contracts
# Lancez vos tests et consultez les logs de deprecation

Nouvelles fonctionnalites a exploiter

  • Typed properties partout : PHP 8.3 permet des types encore plus precis
  • Enum pour les etats : utilisez des PHP enums pour les etats de commande au lieu de strings
  • Clock component : testez le code dependant du temps sans hacks
  • AssetMapper : alternative a Webpack Encore pour les projets simples

Besoin d'aide pour la migration Symfony 7 de votre projet Sylius ? Contactez-nous. Notre outil d'audit identifie automatiquement les incompatibilites.

Questions fréquentes

13 projets livrésGrand-Est & BelgiqueLighthouse >90Disponible immédiatement

Un projet en tête ?

Discutons de votre site web. Réponse garantie sous 24h.

Ou appelez directement :06 95 41 30 25

WhatsApp
Appeler