Asvae\ApiTester\Entities\RouteInfo::extractFormRequest PHP Method

extractFormRequest() protected method

protected extractFormRequest ( )
    protected function extractFormRequest()
    {
        $reflection = $this->getActionReflection();
        if (is_null($reflection)) {
            return null;
        }
        foreach ($reflection->getParameters() as $parameter) {
            // TODO Write the reasoning behind following lines.
            try {
                $class = $parameter->getClass();
            } catch (\ReflectionException $e) {
                break;
            }
            // Если аргумент нетипизирован, значит он уже не будет затянут через DI,
            // И дальнейший обход не имеет смысла, так как все последующие аргументы
            // тоже не будут затянуты через DI, не зависимо от того типизированы они или нет.
            if (is_null($class)) {
                break;
            }
            // Если это форм-реквест.
            if (is_subclass_of($class->name, FormRequest::class)) {
                // Для вызова нестатического метода на объекте, нам необходим инстанс объекта.
                // Мы используем build вместо make, чтобы избежать автоматического запуска валидации.
                $formRequest = app()->build($class->name);
                // Здесь используется метод call, чтобы разрешить зависимости.
                $rules = app()->call([$formRequest, 'rules']);
                return ['class' => $class->name, 'rules' => $rules];
            }
        }
        return null;
    }