Umowy serwisowe Magento
Zasadniczo umowy serwisowe są tylko zestawem interfejsów i klas, które chronią integralność danych i ukrywają logikę biznesową. Powodem, dla którego klienci będą chcieli to wykorzystać, jest fakt, że umowa pozwala na rozwój usługi bez wpływu na jej użytkowników.
Uaktualnienie to jest ważne, ponieważ zmienia sposób interakcji użytkowników z różnymi modułami. W Magento 1 nie było dobrych sposobów interakcji z innymi modułami. Dzięki umowom serwisowym w Magento 2 możesz łatwo uzyskiwać dostęp do danych i nimi manipulować, nie martwiąc się o strukturę systemu.
Architektura umowy serwisowej
Warstwa usług ma dwa różne typy interfejsów: interfejsy danych i interfejsy usług. Interfejsy danych to obiekty, które zachowują integralność danych przy użyciu następujących wzorców:
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.
Interfejsy usług zapewniają zestaw metod publicznych, z których może korzystać klient. Istnieją trzy podtypy interfejsów usług:
Repository Interfaces
Management Interfaces
Metadata Interfaces
Interfejsy repozytorium
Interfejsy repozytorium zapewniają użytkownikowi dostęp do trwałych jednostek danych. Na przykład stałymi jednostkami danych w module klienta są odbiorca, adres i grupa. To daje nam trzy różne interfejsy:
CustomerRepositoryInterface
AddressRepositoryInterface
GroupRepositoryInterface
Metody stosowane przez te interfejsy to:
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.
Interfejsy zarządzania
Te interfejsy zawierają różne funkcje zarządzania niezwiązane z repozytoriami. Oto kilka przykładów:
AccountManagementInterface contains functions such as createAccount(), isEmailAvailable(), changePassword(), and activate().
AddressManagementInterface checks whether an address is valid by using the validate() function.
Liczba wzorów stale rośnie, a wraz z nimi niektóre z tych funkcji prawdopodobnie zostaną do nich dodane.
Interfejsy metadanych
Interfejsy metadanych dostarczają informacji o wszystkich atrybutach zdefiniowanych dla konkretnej encji. Obejmuje to również niestandardowe atrybuty, do których można uzyskać dostęp za pomocą funkcji getCustomAttribute ($ name). Te niestandardowe atrybuty obejmują:
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.
Odniesienie:
https://www.interactivated.me/uk/blog/service-contracts-magento-2/