Своим появлением PHP5 даровал нам такой замечательный инструмент как ленивая подгрузка классов, реализуемая с помощью функции __autoload. К сожалению, Битрикс лишает нас в общем случае использования этой возможности, резервируя её под свои нужды.
Объявление функции __autoload происходит в файле bitrix/modules/main/classes/general/module.php, где функция становится обвёрткой для вызова метода CModule::RequireAutoloadClass($className). Таким образом использовать автозагрузку в Битриксе можно только для классов, подключаемых в рамках модуля. Так что, если Ваш модуль содержит обширное количество классов, рекомендую в файле include.php модуля не подключать классы напрямую через require_once, а воспользоваться методом CModule::AddAutoloadClasses
К слову сказать, давно мечтал о некоей модификации CModule::IncludeModule(), который бы мог передавать определенные параметры и в зависимости от параметра - грузить тот или иной пакет классов.
Это конечно выгодно для своих модулей.
А вот по вашей схеме. Как мне узнать что грузить? Например, есть тяжелый класс A и тяжелый класс B. Подрубают мой модуль. И как узнать что именно потребуется подрубающему?
В этом и смысл __autoload. Как только php поймёт, что он не может найти требуемый класс, он вызовет функцию, зарегистрированную через __autoload, передав ей в качестве параметра имя класса. Подробней здесь
__autoload — Попытка загрузить неопределенный класс Внимание: Данный функционал объявлен УСТАРЕВШИМ, начиная с PHP 7.2.0 и его использование крайне не рекомендовано.
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».