/** * @return ClassGenerator */ public function generateSingular() { $class = ClassGen::classGen($this->name . 'Response', $this->namespace, ['Phrest\\API\\Response\\Response'], 'Response'); foreach ($this->columns as $name => $type) { $property = ClassGen::property($name, 'public', null, $type); $class->addPropertyFromGenerator($property); $params[] = new ParameterGenerator($name, $type); } $constructor = ClassGen::constructor($params); $body = $constructor->getBody(); $body .= 'parent::__construct();' . PHP_EOL; $constructor->setBody($body); $class->addMethodFromGenerator($constructor); return $class; }
/** * Process and create code/files */ public function create() { $uses = ['Phrest\\API\\DI\\PhrestDIInterface', 'Phrest\\SDK\\PhrestSDK', 'Phrest\\SDK\\Request\\AbstractRequest', $this->namespace . '\\' . Generator::$name . 'API']; foreach ($this->requests as $request) { $uses[] = $request->getNamespace() . '\\' . $request->getName(); } $class = ClassGen::classGen($this->name, $this->namespace . '\\' . $this->version, $uses, 'PhrestSDK'); $di = new ParameterGenerator('di', 'PhrestDIInterface'); $constructor = ClassGen::constructor([$di]); $constructor->setBody($this->getConstructorBody()); $class->addMethodFromGenerator($constructor); $abstractRequest = new ParameterGenerator('request', 'AbstractRequest'); $injectDependencies = ClassGen::method('injectDependencies', [$abstractRequest], 'private', 'return $request;'); $docBlock = $injectDependencies->getDocBlock(); $docBlock->setTag(new GenericTag('return', 'AbstractRequest')); $class->addMethodFromGenerator($injectDependencies); foreach ($this->requests as $request) { $getRequest = ClassGen::method('get' . ucfirst($request->getName()), [], 'public', 'return $this->injectDependencies(new ' . $request->getName() . '());'); $getRequest->getDocBlock()->setTag(new GenericTag('return', $request->getName())); $class->addMethodFromGenerator($getRequest); } return $class; }
/** * Process and create code/files */ public function create() { $class = ClassGen::classGen($this->name, $this->namespace, ['Phrest\\SDK\\Request\\AbstractRequest', 'Phrest\\SDK\\Request\\RequestOptions', 'Phrest\\SDK\\PhrestSDK'], 'AbstractRequest'); // Path $path = '/' . $this->version . '/' . strtolower($this->entityName) . $this->getPlaceholderUriFromUrl($this->action->url); $property = ClassGen::property('path', 'private', $path, 'string'); $class->addPropertyFromGenerator($property); // Properties and constructor parameters /** @var ParameterGenerator[] $parameters */ $parameters = []; // Get properties $getParams = $this->generateGetParamsFromUrl($this->action->url); if (!empty($getParams)) { foreach ($getParams as $getParam) { $class->addPropertyFromGenerator(ClassGen::property($getParam, 'public', null)); $parameter = new ParameterGenerator($getParam); $parameter->setDefaultValue(null); $parameters[$getParam] = $parameter; } } // Post properties if (!empty($this->action->postParams)) { foreach ($this->action->postParams as $name => $type) { if ($class->hasProperty($name)) { continue; } $class->addPropertyFromGenerator(ClassGen::property($name, 'public', null, $type)); $parameter = new ParameterGenerator($name, $type); $parameter->setDefaultValue(null); $parameters[$name] = $parameter; } } // Constructor if (!empty($parameters)) { $constructor = ClassGen::constructor($parameters); $class->addMethodFromGenerator($constructor); } // Create method $create = ClassGen::method('create', [], 'public', $this->getCreateBody()); $class->addMethodFromGenerator($create); // Setters foreach ($parameters as $parameter) { $class->addMethodFromGenerator(ClassGen::setter($parameter->getName(), $parameter->getType())); } return $class; }