- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/lib/engine/binder.php
- Класс: BitrixMainEngineBinder
- Вызов: Binder::collectAutoWiredClasses
protected function collectAutoWiredClasses()
{
$event = new Event(
'main',
static::EVENT_ON_BUILD_AUTO_WIRED_CLASSES,
array()
);
$event->send($this);
$autoWiredHandler = array();
foreach ($event->getResults() as $eventResult)
{
$parameters = $eventResult->getParameters();
foreach ($parameters as $handler)
{
if (empty($handler['class']))
{
throw new ArgumentNullException('class');
}
if (empty($handler['onConstructObjectByClassAndId']) || !is_callable($handler['onConstructObjectByClassAndId'], true))
{
throw new ArgumentTypeException('onConstructObjectByClassAndId', 'callable');
}
if (empty($handler['onConstructIdParameterName']))
{
$handler['onConstructIdParameterName'] = function(ReflectionParameter $parameter){
return $parameter->getName() . 'Id';
};
}
elseif (
!is_callable($handler['onConstructIdParameterName'], true) &&
$handler['onConstructIdParameterName'] !== self::ANY_PARAMETER_NAME)
{
throw new ArgumentTypeException('onConstructIdParameterName', 'callable');
}
$autoWiredHandler[$handler['class']] = array(
'onConstructObjectByClassAndId' => $handler['onConstructObjectByClassAndId'],
'onConstructIdParameterName' => $handler['onConstructIdParameterName'],
);
}
}
return $autoWiredHandler;
}