...Человеческий поиск в разработке...
- Модуль: landing
- Путь к файлу: ~/bitrix/modules/landing/lib/publicaction.php
- Класс: BitrixLandingPublicAction
- Вызов: PublicAction::getMethodInfo
static function getMethodInfo($action, $data = array()) { $info = array(); // if action exist and is callable if ($action && mb_strpos($action, '::')) { $actionOriginal = $action; $action = self::getNamespacePublicClasses() . '\' . $action; if (is_callable(explode('::', $action))) { [$class, $method] = explode('::', $action); $info = array( 'action' => $actionOriginal, 'class' => $class, 'method' => $method, 'params_init' => array(), 'params_missing' => array() ); // parse func params $reflection = new ReflectionMethod($class, $method); $static = $reflection->getStaticVariables(); $mixedParams = isset($static['mixedParams']) ? $static['mixedParams'] : []; foreach ($reflection->getParameters() as $param) { $name = $param->getName(); if (isset($data[$name])) { if (!in_array($name, $mixedParams)) { if ( $param->isArray() && !is_array($data[$name]) || !$param->isArray() && is_array($data[$name]) ) { throw new BitrixMainArgumentTypeException( $name ); } } $info['params_init'][$name] = $data[$name]; } elseif ($param->isDefaultValueAvailable()) { $info['params_init'][$name] = $param->getDefaultValue(); } else { $info['params_missing'][] = $name; } } } } return $info; }