• Модуль: 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;
}