Sylius et Symfony 7 : compatibilite, nouveautes et migration
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
| Sylius | Symfony 5.4 | Symfony 6.4 | Symfony 7.x | PHP minimum |
|---|---|---|---|---|
| 1.12 - 1.14 | Oui | Oui | Non | PHP 8.0 |
| 2.0 | Non | Oui | Oui | PHP 8.2 |
| 2.x (latest) | Non | Oui | Oui | PHP 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
- Mettez a jour PHP vers 8.3 minimum
- Passez a Sylius 2.x (prerequis obligatoire)
- Mettez a jour composer.json : changez
"symfony/*": "^6.4"en"^7.0" - Corrigez les deprecations : Symfony 7 supprime tout ce qui etait deprecated dans 6.x
- 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.
