Я розумію, що кращим способом роботи між модулями в Magento 2 є використання договорів на обслуговування.
Отже, якщо я хочу завантажити продукт, я використовую сховище продукту:
$product = $productRepository->getById($id);
що за договором повертає екземпляр Magento\Catalog\Api\Data\ProductInterface
.
Але я міг також скористатися старим способом, безпосередньо викликаючи доменний шар:
$product = $productFactory->create()->load($id);
Чи є випадок, коли це було б необхідно чи корисно?
Програми devdocs кажуть (виділення додано):
Модуль може безпосередньо зателефонувати в інший модуль. Це щільно пов'язане рішення не рекомендується в більшості ситуацій, але іноді неминуче .
[...]
Ваша стратегія виклику коду доменного рівня іншого модуля сильно залежить від унікальної конфігурації та потреб вашої системи.
Джерело: http://devdocs.magento.com/guides/v2.0/architecture/archi_perspectives/domain_layer.html
І в коментарі до пов’язаного питання було зазначено:
використання Репозиторію дасть вам модель даних про продукт (
Api/Data/Product
), яка є моделлю продукту, перетвореною на скинутий DTO. Щось врахувати, оскільки вони зовсім інші
Але наскільки я бачу, що об'єкти однакові за звичайних умов, просто типи повернення на phpDoc відрізняються ( Magento\Catalog\Api\Data\ProductInterface
/ Magento\Catalog\Model\Product
)