/**
* Create the query param statements and documentation
*
* @param Operation $operation
*
* @return array
*/
protected function createQueryParamStatements(Operation $operation)
{
$queryParamDocumentation = [];
$queryParamVariable = new Expr\Variable('queryParam');
$queryParamStatements = [new Expr\Assign($queryParamVariable, new Expr\New_(new Name('QueryParam')))];
if ($operation->getOperation()->getParameters()) {
foreach ($operation->getOperation()->getParameters() as $parameter) {
if ($parameter instanceof Reference) {
$parameter = $this->getResolver()->resolve($parameter);
}
if ($parameter instanceof FormDataParameterSubSchema) {
$queryParamStatements = array_merge($queryParamStatements, $this->formDataParameterGenerator->generateQueryParamStatements($parameter, $queryParamVariable));
$queryParamDocumentation[] = $this->formDataParameterGenerator->generateQueryDocParameter($parameter);
}
if ($parameter instanceof HeaderParameterSubSchema) {
$queryParamStatements = array_merge($queryParamStatements, $this->headerParameterGenerator->generateQueryParamStatements($parameter, $queryParamVariable));
$queryParamDocumentation[] = $this->headerParameterGenerator->generateQueryDocParameter($parameter);
}
if ($parameter instanceof QueryParameterSubSchema) {
$queryParamStatements = array_merge($queryParamStatements, $this->queryParameterGenerator->generateQueryParamStatements($parameter, $queryParamVariable));
$queryParamDocumentation[] = $this->queryParameterGenerator->generateQueryDocParameter($parameter);
}
}
}
return [$queryParamDocumentation, $queryParamStatements, $queryParamVariable];
}