Contrats de service Magento
Essentiellement, les contrats de service ne sont qu'un ensemble d'interfaces et de classes qui protègent l'intégrité des données et cachent la logique métier. La raison pour laquelle les clients voudront l'utiliser est que le contrat permet au service d'évoluer sans affecter ses utilisateurs.
La raison pour laquelle cette mise à niveau est importante est qu'elle modifie la façon dont les utilisateurs interagissent avec différents modules. Dans Magento 1, il n'y avait aucun bon moyen d'interagir avec d'autres modules. Avec les contrats de service dans Magento 2, vous pouvez accéder aux données et les manipuler facilement, sans avoir à vous soucier de la structure du système.
Architecture de contrat de service
La couche de service a deux types d'interface différents: les interfaces de données et les interfaces de service. Les interfaces de données sont des objets qui préservent l'intégrité des données en utilisant les modèles suivants:
They’re read-only, since they only define constants and getters.
Getter functions can contain no parameters.
A getter function can only return a simple object type (string, integer, Boolean), a simple type array, and another data interface.
Mixed types can’t be returned by getter functions.
Data entity builders are the only way to populate and modify data interfaces.
Les interfaces de service fournissent un ensemble de méthodes publiques qu'un client peut utiliser. Il existe trois sous-types d'interfaces de service:
Repository Interfaces
Management Interfaces
Metadata Interfaces
Interfaces de référentiel
Les interfaces de référentiel garantissent qu'un utilisateur peut accéder aux entités de données persistantes. Par exemple, les entités de données persistantes dans le module client sont Consumer, Address et Group. Cela nous donne trois interfaces différentes:
CustomerRepositoryInterface
AddressRepositoryInterface
GroupRepositoryInterface
Les méthodes de ces interfaces sont les suivantes:
Save – If there’s no ID, creates a new record, and updates what’s existing if there is one.
Get – Looks for the IDs in the database and returns a certain data entity interface.
GetList – Finds all data entities that correspond with the search criteria, then gives access to the matches by returning the search result interface.
Delete – Deletes the selected entity
DeleteById – Deletes the entity when you only have its key.
Interfaces de gestion
Ces interfaces contiennent différentes fonctions de gestion qui ne sont pas liées aux référentiels. Voici quelques exemples:
AccountManagementInterface contains functions such as createAccount(), isEmailAvailable(), changePassword(), and activate().
AddressManagementInterface checks whether an address is valid by using the validate() function.
Le nombre de modèles est en constante augmentation et, ce faisant, certaines de ces fonctions sont susceptibles de leur être ajoutées.
Interfaces de métadonnées
Les interfaces de métadonnées fournissent des informations sur tous les attributs définis pour une entité spécifique. Cela inclut également des attributs personnalisés, auxquels vous pouvez accéder avec la fonction getCustomAttribute ($ name). Ces attributs personnalisés incluent:
EAV attributes – Defined via the administration interface for a local site. They can differ according to the site, which means that they can’t be represented in the data entity interface written in PHP.
Extension attributes, for which the extension modules are used.
Référence:
https://www.interactivated.me/uk/blog/service-contracts-magento-2/