Webiny\Component\Rest\Parser\ParameterParser::parse PHP Method

parse() public method

Parses all the parameters and return an array of ParsedParameter instances.
public parse ( ) : array
return array Array of ParsedParameter instances.
    public function parse()
    {
        if (!is_array($this->paramList)) {
            return [];
        }
        $parsedParams = [];
        foreach ($this->paramList as $p) {
            $param = new ParsedParameter();
            $param->name = $p->name;
            $param->type = $this->getType($p->name, $this->paramAnnotations);
            $param->matchPattern = $this->getParamMatchType($param->type);
            try {
                $param->default = $p->getDefaultValue();
                if (is_bool($param->default)) {
                    $param->default = $param->default === false ? '0' : '1';
                }
                $param->required = false;
            } catch (\Exception $e) {
                $param->default = null;
                $param->required = true;
            }
            $parsedParams[] = $param;
        }
        return $parsedParams;
    }

Usage Example

 public function testParse()
 {
     $className = '\\Webiny\\Component\\Rest\\Tests\\Mocks\\MockApiClass';
     $methodName = 'someMethod';
     // get method annotations
     $annotations = $this->annotationsFromMethod($className, $methodName);
     $paramAnnotations = $annotations->get('param', new ConfigObject([]));
     // extract params
     $reflection = new \ReflectionClass($className);
     $method = $reflection->getMethod('someMethod');
     $params = $method->getParameters();
     $instance = new ParameterParser($params, $paramAnnotations);
     $parsedParams = $instance->parse();
     $this->assertInternalType('array', $parsedParams);
     $this->assertInstanceOf('\\Webiny\\Component\\Rest\\Parser\\ParsedParameter', $parsedParams[0]);
     // validate parameters
     $this->assertCount(3, $parsedParams);
     // param 1
     $this->assertSame('param1', $parsedParams[0]->name);
     $this->assertSame('string', $parsedParams[0]->type);
     $this->assertTrue($parsedParams[0]->required);
     // param 2
     $this->assertSame('param2', $parsedParams[1]->name);
     $this->assertSame('string', $parsedParams[1]->type);
     $this->assertFalse($parsedParams[1]->required);
     // param 3
     $this->assertSame('param3', $parsedParams[2]->name);
     $this->assertSame('integer', $parsedParams[2]->type);
     $this->assertFalse($parsedParams[2]->required);
 }
All Usage Examples Of Webiny\Component\Rest\Parser\ParameterParser::parse