/** * @return ClassGenerator */ public function create() { $class = ClassGen::classGen($this->name, $this->namespace, ['Phalcon\\Mvc\\Model'], 'Model'); foreach ($this->columns as $name => $type) { $property = ClassGen::property($name, 'public', null, $type); $class->addPropertyFromGenerator($property); } $class->addMethodFromGenerator(ClassGen::method('initialize')); $findFirst = ClassGen::method('findFirst', [new ParameterGenerator('params', 'mixed', [])])->setBody('return parent::findFirst($params);'); $findFirst->setStatic(true); $findFirst->getDocBlock()->setTag(new Tag\GenericTag('return', 'static')); $class->addMethodFromGenerator($findFirst); return $class; }
/** * @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() { $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; }