Функции выключенных модулей

Можно вопрос, почему происходит подгрузка func.php выключенных модулей.
Если на витрине все окей, то в админке
if(!function_exists(‘ИМЯ_ФУНКЦИИ’)){
отрабатывает как отсутствует, но после сразу же вызывает ошибку Cannot redeclare, так как это функция есть в другом модули но выключенном.

Вот и возникает вопрос, зачем в админке выключеные модули использовать?

3 лайка

Тоже сталкивались с тем, что иногда function_exists взывает фатальные ошибки.

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

Вот жеж. А ведь сталкивался, но думал что это я где-то накосяпорил.

Поддерживаю. Тоже с таким встречались

В целом у меня модулей не много, но из 161 модуля выключены 101. Ну, что же, круто… :smirk:

@Asya передайте пожалуйста это разработчикам.

В админке такое поведение с 4.12.1, а саму возможность подключать func.php выключенных модулей добавили в далеком 2008.
В 2008 её добавили для вызова обработчиков настроек (fn_settings_variants_…, fn_settings_actions_…)

А вердикт какой? Баг это или фишка? Как оборачивать функции каким-то аналогом function_exists, чтобы не ловить ошибки?

Смотря для каких целей используете function_exists. Может нужно добавить условие по статусу модуля?

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

Понятно что она где-то используется, а сама функция где находится?

В func.php в выключенном модули,
просто создайте 2 модуля,
один включен, другой выключен
в выключенном модуле пишем любую функцию
в включенном берем ту же функцию обернутую в !function_exists

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

В 2008 её добавили для вызова обработчиков настроек (fn_settings_variants_…, fn_settings_actions_…)

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

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

Окей, а если мы не знаем есть ли модуль или нет? Ну решение, что вы предлагаете оно же прям костыль, а не решение.