Contratti di servizio Magento
In sostanza, i contratti di assistenza sono solo un insieme di interfacce e classi che proteggono l'integrità dei dati e nascondono la logica aziendale. Il motivo per cui i clienti vorranno utilizzarlo è che il contratto consente al servizio di evolversi senza influire sui suoi utenti.
Il motivo per cui questo aggiornamento è importante è perché cambia il modo in cui gli utenti interagiscono con diversi moduli. In Magento 1 non c'erano buoni modi per interagire con altri moduli. Con i contratti di assistenza in Magento 2, è possibile accedere e manipolare i dati facilmente, senza doversi preoccupare della struttura del sistema.
Architettura del contratto di servizio
Il livello di servizio ha due diversi tipi di interfaccia: interfacce dati e interfacce di servizio. Le interfacce dati sono oggetti che preservano l'integrità dei dati utilizzando i seguenti modelli:
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.
Le interfacce di servizio forniscono una serie di metodi pubblici che un client può utilizzare. Esistono tre sottotipi di interfacce di servizio:
Repository Interfaces
Management Interfaces
Metadata Interfaces
Interfacce del repository
Le interfacce del repository assicurano che un utente possa accedere a entità di dati persistenti. Ad esempio, le entità di dati persistenti all'interno del Modulo cliente sono Consumatore, Indirizzo e Gruppo. Questo ci dà tre diverse interfacce:
CustomerRepositoryInterface
AddressRepositoryInterface
GroupRepositoryInterface
I metodi che hanno queste interfacce sono:
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.
Interfacce di gestione
Queste interfacce contengono diverse funzioni di gestione non correlate ai repository. Ecco alcuni esempi:
AccountManagementInterface contains functions such as createAccount(), isEmailAvailable(), changePassword(), and activate().
AddressManagementInterface checks whether an address is valid by using the validate() function.
Il numero di modelli è in costante aumento e, nel farlo, è probabile che alcune di queste funzioni vengano aggiunte ad esse.
Interfacce di metadati
Le interfacce dei metadati forniscono informazioni su tutti gli attributi definiti per un'entità specifica. Ciò include anche attributi personalizzati, a cui è possibile accedere con la funzione getCustomAttribute ($ name). Questi attributi personalizzati includono:
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.
Riferimento:
https://www.interactivated.me/uk/blog/service-contracts-magento-2/