[miniShop2 4.0.0-beta] - Разбор нововведений. Небольшие изменения в контроллерах
В серии коротких заметок расскажу и детально покажу что нового мы сделали для Вас в новой версии miniShop2 Для MODX2
На очереди информация для разработчиков, касательно окончательного положения контроллеров.
В версии 3.0 было принято решение эти контроллеры перенести в отдельный каталог, за пределы model, просто потому что в каталоге model по определению должны находиться только те классы, что обеспечивают связь с базой данных.
Было:
Для обратной совместимости в каталоге model были оставлены заглушки, которые перенаправляли обращение к старым файлам по новому пути и писали в журнал ошибок информацию о необходимости обращаться к новым файлам.
В версии 4.0 мы убираем заглушки.
Таким образом, если в вашем проекте сохраняется логика, при которой есть обращение к старым версиям контроллеров внутри каталога model — обновление гарантировано сломает проект
Если у вас в проекте есть расширенные контроллеры — убедитесь что они ссылаются на существующие файлы.
Если вы используете компоненты платежных систем или доставок — убедитесь, что они ссылаются на существующие файлы.
Все интерфейсы были вынесены в отдельный каталог
Также небольшое обновление, которое тоже касается контроллеров.
Исторически все 4 файла контроллеров содержали сразу два класса. Интерфейс, и класс реализующий этот интерфейс. В современном PHP так не делают. Все должно быть в отдельных файлах, в отдельных каталогах.
Теперь все интерфейсы хранятся отдельно и подключаются в классы контроллеров через require_once
На очереди информация для разработчиков, касательно окончательного положения контроллеров.
О каких контроллерах речь
Исторически в miniShop2 есть 4 файла, которые именованы как handler — но по сути своей являются контроллерами, реализующими логику работы компонента.- msOrderHandler — управляет логикой работы с заказами
- msCartHandler — управляет логикой работы с корзиной
- msPaymentHandler — управляет логикой работы с платежами
- msDeliveryHandler — управляет логикой работы с доставками
В версии 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
Поблагодарить автора
Отправить деньги