[miniShop2 4.0.0-beta] - Разбор нововведений. Небольшие изменения в контроллерах

В серии коротких заметок расскажу и детально покажу что нового мы сделали для Вас в новой версии miniShop2 Для MODX2

На очереди информация для разработчиков, касательно окончательного положения контроллеров.


О каких контроллерах речь

Исторически в miniShop2 есть 4 файла, которые именованы как handler — но по сути своей являются контроллерами, реализующими логику работы компонента.

  • msOrderHandler — управляет логикой работы с заказами
  • msCartHandler — управляет логикой работы с корзиной
  • msPaymentHandler — управляет логикой работы с платежами
  • msDeliveryHandler — управляет логикой работы с доставками
До версии 3.0 перечисленные классы контроллеров хранились в каталоге model, откуда они наследовались и расширялись различными компонентами и собственными классами.

В версии 3.0 было принято решение эти контроллеры перенести в отдельный каталог, за пределы model, просто потому что в каталоге model по определению должны находиться только те классы, что обеспечивают связь с базой данных.

Было:
core/components/minishop2/model/minishop2/mscarthandler.class.php
Стало:
core/components/minishop2/handlers/mscarthandler.class.php

Для обратной совместимости в каталоге model были оставлены заглушки, которые перенаправляли обращение к старым файлам по новому пути и писали в журнал ошибок информацию о необходимости обращаться к новым файлам.
<?php

if (!empty($this->modx->getOption('log_deprecated'))) {
    $this->modx->log(
        xPDO::LOG_LEVEL_ERROR,
        'Deprecated: use handlers from catalog core/components/minishop2/handlers/'
    );
}
require_once dirname(__FILE__, 3) . '/handlers/mscarthandler.class.php';

В версии 4.0 мы убираем заглушки.
Таким образом, если в вашем проекте сохраняется логика, при которой есть обращение к старым версиям контроллеров внутри каталога model — обновление гарантировано сломает проект

Если у вас в проекте есть расширенные контроллеры — убедитесь что они ссылаются на существующие файлы.

Если вы используете компоненты платежных систем или доставок — убедитесь, что они ссылаются на существующие файлы.

Все интерфейсы были вынесены в отдельный каталог

Также небольшое обновление, которое тоже касается контроллеров.
Исторически все 4 файла контроллеров содержали сразу два класса. Интерфейс, и класс реализующий этот интерфейс. В современном PHP так не делают. Все должно быть в отдельных файлах, в отдельных каталогах.
Теперь все интерфейсы хранятся отдельно и подключаются в классы контроллеров через require_once
core/components/minishop2/handlers/interfaces
Николай Савин
21 сентября 2022, 09:53
modx.pro
746
+11
Поблагодарить автора Отправить деньги

Комментарии: 0

Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
0