Договори на обслуговування 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
Інтерфейси сховища
Інтерфейси сховища гарантують, що користувач може отримати доступ до стійких об'єктів даних. Наприклад, постійними суб'єктами даних у Модулі замовника є споживач, адреса та група. Це дає нам три різних інтерфейсу:
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.interactivate.me/uk/blog/service-contracts-magento-2/