ControllerResolver::createController

  1. Bitrix24 API (v. 23.675.0)
  2. ui
  3. ControllerResolver
  4. createController
  • Модуль: ui
  • Путь к файлу: ~/bitrix/modules/ui/lib/FileUploader/ControllerResolver.php
  • Класс: BitrixUIFileUploaderControllerResolver
  • Вызов: ControllerResolver::createController
static function createController(string $controllerName, array $options = []): ?UploaderController
{
	[$moduleId, $className] = self::resolveName($controllerName);

	if (!is_string($className))
	{
		return null;
	}

	if (is_string($moduleId) && self::canIncludeModule($moduleId))
	{
		Loader::includeModule($moduleId);
	}

	try
	{
		$controllerClass = new ReflectionClass($className);
		if ($controllerClass->isAbstract())
		{
			return null;
		}

		if (!$controllerClass->isSubclassOf(UploaderController::class))
		{
			return null;
		}

		/** @var UploaderController $controller */
		$controller = $controllerClass->newInstance($options);

		// $baseClass = new ReflectionClass(UploaderController::class);
		// $moduleIdProperty = $baseClass->getProperty('moduleId');
		// $moduleIdProperty->setAccessible(true);
		// $moduleIdProperty->setValue($controller, $moduleId);
		//
		// $nameProperty = $baseClass->getProperty('name');
		// $nameProperty->setAccessible(true);
		// $nameProperty->setValue($controller, $controllerName);

		if (!$controller->isAvailable())
		{
			return null;
		}

		return $controller;
	}
	catch (ReflectionException $exception)
	{
		$application = HttpApplication::getInstance();
		$exceptionHandler = $application->getExceptionHandler();
		$exceptionHandler->writeToLog($exception);
	}

	return null;
}

Добавить комментарий