Un ensemble d'abstractions extraites des composants Symfony.
Peut être utilisé pour s'appuyer sur une sémantique que les composants Symfony se sont révélés utiles - et qui ont déjà des implémentations testées au combat.
Les packages qui implémentent des contrats spécifiques doivent les lister dans la section "provide" de leur fichier "composer.json", en utilisant la convention symfony/*-implementation
(par exemple "provide": { "symfony/cache-implementation": "1.0" }
).
Les abstractions de ce package sont utiles pour obtenir un couplage lâche et une interopérabilité. En utilisant les interfaces fournies comme indications de type, vous pouvez réutiliser toutes les implémentations qui correspondent à leurs contrats. Il peut s'agir d'un composant Symfony, ou d'un autre fourni par la communauté PHP dans son ensemble.
En fonction de leur sémantique, certaines interfaces peuvent être combinées avec l'autowiring pour injecter un service de manière transparente dans vos classes.
D'autres peuvent être utiles en tant qu'interfaces d'étiquetage, pour faire allusion à un comportement spécifique qui pourrait être activé lors de l'utilisation de la configuration automatique ou du marquage manuel des services (ou de tout autre moyen fourni par votre infrastructure.)
Le cas échéant, les contrats fournis sont construits sur les PSR de PHP-FIG. Mais le groupe a des objectifs et des processus différents. Ici, nous nous concentrons sur la fourniture d'abstractions utiles en elles-mêmes tout en restant compatibles avec les implémentations fournies par Symfony. Bien que ce ne soit pas l'objectif principal, nous espérons que les contrats déclarés contribueront directement ou indirectement au PHP-FIG.