Вышла новая версия DataLife Engine – 12.0 [18+]

Раньше я использовал этот движок здесь, но недавно меня окончательно задолбало, что при обновлении кода надо будет заново “устанавливать” модули и хаки. Осторожно, есть мат.

Почему я взял слово “устанавливать” в кавычки?

Потомучто это пиздец, а не установка. Из-за того, что никто нихуя не продумал, когда движок только-только зарождался, модули ставятся абсолютно кретинским способом – правкой кода ядра. В 2017-м году.

Есть, конечно, даже API для разработчиков модулей, которое позволяет делать некоторые вещи, и тогда можно обойтись простым инклудом своего модуля в темплейтах. Но этого хватает только в том случае, если вы что-то добавляете в выводе информации на сайте. Если вам понадобиться изменить что-то в логике работы – вы должны будете править файлы ядра.

Среднестатистическая инструкция для таких модулей и хаков будет почти полностью состоять из строк вида:

Откройте файл engine/modules/somefile.php, найдите строку с таким-то текстом, и вместо неё вставьте такую-то строку,

затем в файле engine/modules/some-other-file.php найдите строку вот-таткую-то и перед ней вставьте такую-то.

И так до победного.

Если у вас таких модулей больше десятка, то при очередном обновлении вы, скорее всего, станете перед дилеммой: снова переустановить всё, или ну его нахуй? Если вы мазохист – вы выберете первый вариант, и на какой-то итерации обнаружите, что строчки, которую надо найти и заменить уже больше нет в указанном файле. И приходится рыться в коде, сравнивать с предыдущей версией – в общем, не самым лучшим образом проводить время.

Альтернативный путь

Кто-то из пользователей движка даже решил запилить скрипт(называется VQMOD), который позволяет на основе файла со списком перезаписанных строк подменять их в коде движка, чтобы само ядро оставалось нетронутым, и модули при этом работали(или как-то так). Замечательно. Не мне одному казалось, что ставить модули, роясь в файлах – как-то неправильно. Но, последние вести о этом проекте были около года назад. Идея была тепло встречена разработчиком движка, хотя на его месте я бы не давал советы, как мне видится реализация этого скрипта, а тупо переписал бы движок по-нормальному. Но вряд ли это произойдёт в ближайшем десятке версий DLE.

И вот, выходит мажорный апдейт движка – версия 12.0

И есть много новых и хороших фич, новая админка, всё такое. И вы снова будете переустаналивать модули вручную – заебись.

Критикуешь – предлагай

Весь этот баттхёрт (дословно – “жопная боль” в переводе с английского) можно было бы успокоить, сделав нормальную систему модулей, при которой они бы тихонько складывались в папки, и активировались в админке (как в ВордПрессе, Мадженто и т.д.)

Да, пришлось бы больше платить фрилансерам всего мира, пишущим DLE (а именно такое впечатление складывалось пару лет назад, когда я видел комментарии на немецком, испанском и ломаном английском), пришлось бы их заставить выучить ООП. Но не было бы этой херни с модулями, в которых ничего не будет работать, пока ты не перелопатишь половину движка.

Чтобы было лучше, достаточно было:

  1. Запилить ивенты, которые смогли бы перехватываться кастомными модулями
  2. Сделать автоматическую подгрузку кастомных модулей
  3. В конфигах модулей указывать, на какой системный ивент вешать какой обработчик
  4. … или сделать ещё продуманнее.

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

Такие дела.

Совет начинающим

Если собрались писать свой движок в 2017-м году:

  • подумайте о расширяемости,
  • прикрутите автозагрузку классов,
  • используйте Composer для подгрузки сторонних библиотек – уже столько всего написано,
  • не бойтесь юзать OOP с нужными паттернами проектирования там, где они действительно необходимы.

Или я не прав?

Не нравится то, что я написал – напишите свои аргументы в комментариях.

Автор

Dmitry

Инженер, любитель котиков и плохой погоды за окном.

Добавить комментарий