Рейтинг: 6.6626  
Новая
Предложил Пользователь 109495 19.12.2016 09:29:10

Подключение модулей при autoload

С тех пор как появился D7 разработчики модулей вздохнули свободнее -- больше в include.php не нужно прописывать все классы модулей. Глядя на исходный код Вашей автозагрузки возник вопрос -- почему бы не разрешить автоматическое подключение модулей? До этого остался ровно 1 шаг -- если модуль не подключен, проверять его в папках bitrix/modules/ и local/modules/
А для модулей, чьи авторы все-таки хотят сохранить строгость в подключении, можно предусмотреть опцию -- можно или нет подключать модуль автоматически по мере надобности
Рейтинг: 6.5302  
На голосовании
Предложил Пользователь 109495 29.01.2015 09:05:26

Автоматическое подключение обработчиков событий (D7-style)

У нас в веб-студии есть определененный стандарт: все обработчики хранятся в модулях в папке lib/eventhandlers/<код модуля, чье событие обрабатывается>.php
Внутри - класс с методами, чьи имена совпадают с названиями событий. Т.е. для события onBeforeUserLogin модуля main обработчик будет такой:
\Intervolga\Diving\EventHandlers\Main :: onBeforeUserLogin

Ситуацию усложняет только необходимость подключения этих обработчиков в include.php файле модуля.

Ничего не напоминает? Когда-то у нас была куча include'ов обычных классов и появился спситель - автозагрузчик D7. Может, сделаете аналогичную автозагрузку обработчиков событий?
Рейтинг: 0.1033  
Внедрено
Предложил Пользователь 17890 01.08.2013 07:21:02

Сделать нормальную автозагрузку классов через API

Сделать возможность писать свои автопогрузчики классов, либо стандартизировать эту операцию.

Выходит, что сейчас максимум что можно - это сделать автозагрузку в рамках своего модуля, как описано в блоге. А если мне не нужен модуль? А если мне нужна некая своя "библиотека классов", которые я, допустим, в компонентах дергаю? Мне все время include необходимого класса писать в init.php? Хочется по-людски управлять этим процессом...

Я делал следующий хак: подрубал файл в dbconn.php и переопределял функцию __autoload(). (До того, как битрикс эту функцию "захавает" под себя).
Это все под PHP 5.3 было. Хака, чтобы использовать spl_autoload_register() я не нашел.

Что я предлагаю, и что было бы удобно:
некий способ, который позволит повесить событие и указать свой обработчик автозагрузки. При этом система битрикс будет искать неопределенный класс используя этот произвольный обработчик.

Сейчас с этим полный "баян", а хочется что-то хорошее...