Пример #1
0
 /**
  * @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;
 }
Пример #2
0
 /**
  * @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;
 }
Пример #3
0
 /**
  * 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;
 }