/** * Add the constructor method for the operation */ private function addConstructorMethod() { $requiredParameters = $this->operationDefinition->getRequiredParams(); $methodGenerator = new MethodGenerator('__construct'); $defaultParams = $this->operationDefinition->getDefaultParams(); $body = ''; if (count($defaultParams)) { $body = '$defaultParams = [' . PHP_EOL; foreach ($defaultParams as $param) { $body .= sprintf(" '%s' => '%s',", $param->getName(), $param->getDefault()); $body .= PHP_EOL; } $body .= '];' . PHP_EOL; $body .= '$this->setParams($defaultParams);' . PHP_EOL; } $constructorParams = []; $constructorParams[] = new ParameterGenerator('api', $this->apiGenerator->getFQCN()); $body .= '$this->api = $api;' . PHP_EOL; foreach ($requiredParameters as $param) { $normalizedParamName = normalizeParamName($param->getName()); $constructorParams[] = new ParameterGenerator($normalizedParamName, $param->getType()); $body .= sprintf("\$this->parameters['%s'] = \$%s;" . PHP_EOL, $param->getName(), $normalizedParamName); } $methodGenerator->setParameters($constructorParams); $methodGenerator->setBody($body); $this->classGenerator->addMethodFromGenerator($methodGenerator); }