Вышла новая версия DataLife Engine – 12.0 [18+]
Раньше я использовал этот движок здесь, но недавно меня окончательно задолбало, что при обновлении кода надо будет заново “устанавливать” модули и хаки. Осторожно, есть мат.
Почему я взял слово “устанавливать” в кавычки?
Потомучто это пиздец, а не установка. Из-за того, что никто нихуя не продумал, когда движок только-только зарождался, модули ставятся абсолютно кретинским способом — правкой кода ядра. В 2017-м году.
Есть, конечно, даже API для разработчиков модулей, которое позволяет делать некоторые вещи, и тогда можно обойтись простым инклудом своего модуля в темплейтах. Но этого хватает только в том случае, если вы что-то добавляете в выводе информации на сайте. Если вам понадобиться изменить что-то в логике работы — вы должны будете править файлы ядра.
Среднестатистическая инструкция для таких модулей и хаков будет почти полностью состоять из строк вида:
Откройте файл engine/modules/somefile. php, найдите строку с таким-то текстом, и вместо неё вставьте такую-то строку,
затем в файле engine/modules/some-other-file. php найдите строку вот-таткую-то и перед ней вставьте такую-то.
И так до победного.
Если у вас таких модулей больше десятка, то при очередном обновлении вы, скорее всего, станете перед дилеммой: снова переустановить всё, или ну его нахуй? Если вы мазохист — вы выберете первый вариант, и на какой-то итерации обнаружите, что строчки, которую надо найти и заменить уже больше нет в указанном файле. И приходится рыться в коде, сравнивать с предыдущей версией — в общем, не самым лучшим образом проводить время.
Альтернативный путь
Кто-то из пользователей движка даже решил запилить скрипт(называется VQMOD), который позволяет на основе файла со списком перезаписанных строк подменять их в коде движка, чтобы само ядро оставалось нетронутым, и модули при этом работали(или как-то так). Замечательно. Не мне одному казалось, что ставить модули, роясь в файлах — как-то неправильно. Но, последние вести о этом проекте были около года назад. Идея была тепло встречена разработчиком движка, хотя на его месте я бы не давал советы, как мне видится реализация этого скрипта, а тупо переписал бы движок по-нормальному. Но вряд ли это произойдёт в ближайшем десятке версий DLE.
И вот, выходит мажорный апдейт движка — версия 12.0
И есть много новых и хороших фич, новая админка, всё такое. И вы снова будете переустаналивать модули вручную — заебись.
Критикуешь — предлагай
Весь этот баттхёрт (дословно — “жопная боль” в переводе с английского) можно было бы успокоить, сделав нормальную систему модулей, при которой они бы тихонько складывались в папки, и активировались в админке (как в ВордПрессе, Мадженто и т. д.)
Да, пришлось бы больше платить фрилансерам всего мира, пишущим DLE (а именно такое впечатление складывалось пару лет назад, когда я видел комментарии на немецком, испанском и ломаном английском), пришлось бы их заставить выучить ООП. Но не было бы этой херни с модулями, в которых ничего не будет работать, пока ты не перелопатишь половину движка.
Чтобы было лучше, достаточно было:
- Запилить ивенты, которые смогли бы перехватываться кастомными модулями
- Сделать автоматическую подгрузку кастомных модулей
- В конфигах модулей указывать, на какой системный ивент вешать какой обработчик
- … или сделать ещё продуманнее.
Но, этого пока не случилось, поэтому я буду дальше жаловаться на жизнь, встречать абсолютное непонимание и даже неодобрение на официальном форуме DLE от активных пользователей этого движка.
Такие дела.
Совет начинающим
Если собрались писать свой движок в 2017-м году:
- подумайте о расширяемости,
- прикрутите автозагрузку классов,
- используйте Composer для подгрузки сторонних библиотек — уже столько всего написано,
- не бойтесь юзать OOP с нужными паттернами проектирования там, где они действительно необходимы.
Или я не прав?
Не нравится то, что я написал — напишите свои аргументы в комментариях.