Сделать возможность писать свои автопогрузчики классов, либо стандартизировать эту операцию.
Выходит, что сейчас максимум что можно - это сделать автозагрузку в рамках своего модуля, как описано в блоге. А если мне не нужен модуль? А если мне нужна некая своя "библиотека классов", которые я, допустим, в компонентах дергаю? Мне все время include необходимого класса писать в init.php? Хочется по-людски управлять этим процессом...
Я делал следующий хак: подрубал файл в dbconn.php и переопределял функцию __autoload(). (До того, как битрикс эту функцию "захавает" под себя). Это все под PHP 5.3 было. Хака, чтобы использовать spl_autoload_register() я не нашел.
Что я предлагаю, и что было бы удобно: некий способ, который позволит повесить событие и указать свой обработчик автозагрузки. При этом система битрикс будет искать неопределенный класс используя этот произвольный обработчик.
Сейчас с этим полный "баян", а хочется что-то хорошее...
Кстати, в битриксе функция __autoload определена тут: bitrix\modules\main\classes\general\module.php
// register autoload
if (!function_exists("__autoload"))
{
if (function_exists('spl_autoload_register'))
{
spl_autoload_register(array('CModule', 'RequireAutoloadClass'));
}
else
{
function __autoload($className)
{
CModule::RequireAutoloadClass($className);
}
}
define("NO_BITRIX_AUTOLOAD", false);
}
else
{
define("NO_BITRIX_AUTOLOAD", true);
}
А константа
NO_BITRIX_AUTOLOAD
определяет, есть ли возможность использовать автозагрузку для классов - или нет. Это видать исторический хвост, т.к. начиная с php 5.3 автозагрузка всегда есть.
это то, что нужно.
bitrix\modules\main\classes\general\module.php