Сервисные контракты Magento
По сути, сервисные контракты - это просто набор интерфейсов и классов, которые защищают целостность данных и скрывают бизнес-логику. Причина, по которой клиенты захотят использовать это, заключается в том, что контракт позволяет сервису развиваться, не затрагивая его пользователей.
Это обновление важно по той причине, что оно меняет способ взаимодействия пользователей с различными модулями. В Magento 1 не было хороших способов взаимодействия с другими модулями. С контрактами на обслуживание в Magento 2 вы можете легко получать доступ к данным и манипулировать ими, не беспокоясь о структуре системы.
Архитектура сервисного контракта
Сервисный уровень имеет два разных типа интерфейса: интерфейсы данных и сервисные интерфейсы. Интерфейсы данных - это объекты, которые сохраняют целостность данных, используя следующие шаблоны:
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.
Сервисные интерфейсы предоставляют набор открытых методов, которые клиент может использовать. Существует три подтипа сервисных интерфейсов:
Repository Interfaces
Management Interfaces
Metadata Interfaces
Интерфейсы репозитория
Интерфейсы репозитория гарантируют, что пользователь может получить доступ к постоянным объектам данных. Например, постоянными объектами данных в клиентском модуле являются Consumer, Address и Group. Это дает нам три разных интерфейса:
CustomerRepositoryInterface
AddressRepositoryInterface
GroupRepositoryInterface
Методы, которые имеют эти интерфейсы:
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.
Интерфейсы управления
Эти интерфейсы содержат различные функции управления, которые не связаны с хранилищами. Вот некоторые примеры:
AccountManagementInterface contains functions such as createAccount(), isEmailAvailable(), changePassword(), and activate().
AddressManagementInterface checks whether an address is valid by using the validate() function.
Количество шаблонов постоянно растет, и при этом некоторые из этих функций, вероятно, будут добавлены к ним.
Интерфейсы метаданных
Интерфейсы метаданных предоставляют информацию обо всех атрибутах, которые определены для конкретного объекта. Сюда также входят настраиваемые атрибуты, доступ к которым можно получить с помощью функции getCustomAttribute ($ name). Эти пользовательские атрибуты включают в себя:
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.
Ссылка:
https://www.interactivated.me/uk/blog/service-contracts-magento-2/