Magento-Serviceverträge
Im Wesentlichen sind Serviceverträge nur eine Reihe von Schnittstellen und Klassen, die die Datenintegrität schützen und die Geschäftslogik verbergen. Der Grund, warum Kunden dies nutzen möchten, besteht darin, dass der Vertrag die Weiterentwicklung des Dienstes ermöglicht, ohne die Benutzer zu beeinträchtigen.
Der Grund, warum dieses Upgrade wichtig ist, ist, dass es die Art und Weise ändert, wie Benutzer mit verschiedenen Modulen interagieren. In Magento 1 gab es keine guten Möglichkeiten, mit anderen Modulen zu interagieren. Mit Serviceverträgen in Magento 2 können Sie einfach auf Daten zugreifen und diese bearbeiten, ohne sich um die Struktur des Systems kümmern zu müssen.
Servicevertragsarchitektur
Die Serviceschicht hat zwei verschiedene Schnittstellentypen: Datenschnittstellen und Serviceschnittstellen. Datenschnittstellen sind Objekte, bei denen die Datenintegrität unter Verwendung der folgenden Muster erhalten bleibt:
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.
Service-Interfaces bieten eine Reihe von öffentlichen Methoden, die ein Client verwenden kann. Es gibt drei Subtypen von Serviceschnittstellen:
Repository Interfaces
Management Interfaces
Metadata Interfaces
Repository-Schnittstellen
Repository-Schnittstellen stellen sicher, dass ein Benutzer auf persistente Datenentitäten zugreifen kann. Persistente Datenentitäten innerhalb des Kundenmoduls sind beispielsweise Consumer, Address und Group. Dies gibt uns drei verschiedene Schnittstellen:
CustomerRepositoryInterface
AddressRepositoryInterface
GroupRepositoryInterface
Die Methoden, die diese Schnittstellen haben, sind:
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.
Management-Schnittstellen
Diese Schnittstellen enthalten verschiedene Verwaltungsfunktionen, die sich nicht auf Repositorys beziehen. Hier sind einige Beispiele:
AccountManagementInterface contains functions such as createAccount(), isEmailAvailable(), changePassword(), and activate().
AddressManagementInterface checks whether an address is valid by using the validate() function.
Die Anzahl der Muster nimmt ständig zu, und dabei werden wahrscheinlich einige dieser Funktionen hinzugefügt.
Metadaten-Schnittstellen
Metadatenschnittstellen enthalten Informationen zu allen Attributen, die für eine bestimmte Entität definiert sind. Dies schließt auch benutzerdefinierte Attribute ein, auf die Sie mit der Funktion getCustomAttribute ($ name) zugreifen können. Diese benutzerdefinierten Attribute umfassen:
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.
Referenz:
https://www.interactivated.me/uk/blog/service-contracts-magento-2/