Решил создать бесплатный модуль для OpenCart 4 но столкнулся с целой кучей нюансов, которые превращают разработку в сплошной ад..
1. В 4.0.0.0 можно создать архив модуля с подпапками и он работает, а в 4.0.1.1 уже не работает
2. В 4.0.0.0 вы можете добавить новое событие следующим образом:
$this->model_setting_event->addEvent($code,$description,$trigger,$action,$status,$sort_order);
но в 4.0.1.0 уже используется массив для событий, что конечно лучше, на зачем же такие изменения делать в минорных версиях!?
$this->model_setting_event->addEvent($event);
3. до 4.0.2.0 маршруты были с "|" разделителем: 'marketplace/event|save'
но с 4.0.2.0 это уже ".": 'marketplace/event.save' (см. https://github.com/opencart/opencart/issues/11594)
4. 4.0.0.0 использует функцию utf8_strlen()
но 4.0.1.0 использует \Opencart\System\Helper\Utf8\strlen
И так далее. И вам нужно либо создать отдельную версию модуля для каждой версии OpenCart (и поддерживать их все в будущем), либо добавить кучу конструкций
if (version_compare(VERSION...
в свой код.
И это только малая часть, то, что с чем я сам столкнулся непосредственно.
И это при том что вышло всего-то пару минорных версий. Еще даже не версия 4.1.. Что будет в версии 4.3?.. Почему нельзя все подобные изменения которые ломают совместимость модулей внести сразу в главную версию, а потом уже не трогать до новой главной версии? Или если так хочеться изменить то сделать это так, чтобы не поломать совместимость? Можно же в методе addEvent прописать логику, что если там первій параметр это массив то брать данные оттуда, а если строка то брать данные из аргументов. И все, все работает и никому не нужно ничего изменять. Тоже самое с разделителем в маршруте итд. Но нет, нужно добавить целую кучу мелких изменений которые полностью ломают совместимость всех модулей и то что работает на 4.0.0 уже не будет работать на 4.0.1, а то, что работает на 4.0.1 уже не будет на 4.0.2.. Пц..
+ документации нету вообще никакой, все приходится искать самостоятельно в коде.
+ модификаторов в 4 версии нету, убрали полностью, а События покрывают только малую часть функционала и.. выкручивайся как хочешь, уже есть vqmod для 4 версии опеканрта.. добавили его еще в 1 версии движка, чтобы в версии 2 заменить на модификаторы, а в версии 4 отказаться от модификаторов и вернуться обратно к vqmod?..
У меня есть какое-то скрытое чувство, что Даниель люто ненавидит всех разработчиков OpenCart...