Magento 2: які переваги використання контрактів на обслуговування?


15

Отже, як деякі з вас можуть знати, Magento 2 рекомендованим способом поводження з моделями / колекціями для дій CRUD є використання контрактів на обслуговування.

Однак, згідно з питаннями та питаннями Magento SE, схоже, більшість людей замість цього використовують модель / ресурсну модель / колекцію безпосередньо.

Як приклад для завантаження цитати, я можу це зробити безпосередньо через завод так:

$this->quoteFactory->create()->load($quoteId);

Де $this->quoteFactoryє примірник\Magento\Quote\Model\QuoteFactory

Але я також можу це зробити за допомогою договору на обслуговування так:

$this->quoteRepository->get($quoteId);

Де $this->quoteRepositoryє примірник\Magento\Quote\Api\CartRepositoryInterface

Тож мої запитання - в чому переваги використання контрактів на послуги на заводах?

Відповіді:


18

Переваги використання контрактів на обслуговування, (відповідно до розуміння 2

Контракти на обслуговування мають ряд важливих функцій для magento 2, таких як:

  • Оновлення модулів стає простим.

  • Спростіть налаштування модуля, не заглиблюючись у основні файли.

  • Зменшити конфлікт між модулями в системі.

  • Оновлення Magento є більш безпечними, використовуючи контракт на обслуговування.

  • Служби залишатимуться незмінними в нових випусках, що робить оновлення в майбутньому легким для існуючого модуля.

  • Для моделей / колекцій цей випадок не відповідає дійсності в нових випусках.

2

Переваги договору на обслуговування:

  • Підвищити модульність Magento

  • Переконайтеся, що чітко визначений та довговічний API, який можуть реалізувати інші модулі та сторонні розширення

  • Спростіть налаштування служб як веб-API.

  • Суб'єкти даних розкривають простішу модель даних, ніж модель даних в основної схеми реляційної бази даних

  • Використовуйте різні технології зберігання даних для різних зборів даних


2

Я думаю, що найбільша перевага полягає в тому, що модулі можуть визначати, яку функціональність можуть використовувати інші модулі. У Magento 1 у вас були помічники, що там, де часто зловживають з цією метою (але це зовсім інше обговорення), але в Magento 2 ваш модуль може надавати функціональність іншим модулям (наприклад, стороннім розробникам) і розділяти його та самостійно -утримується.

Dependency Injection надає систему, де ви можете використовувати інтерфейс у своїй конструкції, щоб мати доступ лише до цих публічних методів.

Деякі приклади:

Хочете пов’язати продукт у кількох категоріях? Використання \Magento\Catalog\Api\CategoryLinkManagementInterface:

$this->categoryLinkManagement->assignProductToCategories(
    $sku,
    $categoryIds
);

Хочете збільшити кількість запасів продукції? Використання Magento\CatalogInventory\Api\StockManagementInterface:

$this->stockManagement->backItemQty(
    $productId,
    $itemsToReceive
);

Ці два приклади прекрасно показують правильне використання договорів на обслуговування. Крім того, вони забезпечують єдиний інтерфейс для спілкування з:

  • Інші модулі (як описано вище)
  • Командні консолі
  • Дзвінки API
  • тощо.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.