Пример #1
0
 /**
  * @param ControllerSpec $spec
  * @return \PhpParser\Node[]
  */
 private function doGenerate(ControllerSpec $spec)
 {
     $factory = new \PhpParser\BuilderFactory();
     $stmts = array();
     $stmts[] = $factory->namespace(array($spec->getBundle()->getNamespace(), 'Controller'));
     $class = $factory->class($spec->getName() . 'Controller');
     if ($spec->getBaseClass()) {
         $stmts[] = $factory->use($spec->getBaseClass());
         $class->extend(new Name(array_slice($spec->getBaseClass(), -1, 1)));
         if ($spec->getOptions()->isStrictOOP()) {
             $class->makeFinal();
         }
     }
     foreach ($spec->getActions() as $action) {
         $class->addStmt($factory->method($action . 'Action'));
     }
     $stmts[] = $class;
     $nodes = array_map(function ($stmt) {
         return $stmt->getNode();
     }, $stmts);
     return $nodes;
 }
Пример #2
0
 /**
  * @param \EBT\ExtensionBuilder\Domain\Model\ClassObject\Property $property
  * @return \PhpParser\Node\Stmt\Property
  */
 public function buildPropertyNode(\EBT\ExtensionBuilder\Domain\Model\ClassObject\Property $property)
 {
     $factory = new \PhpParser\BuilderFactory();
     $propertyNodeBuilder = $factory->property($property->getName());
     $propertyNode = $propertyNodeBuilder->getNode();
     $propertyNode->type = $property->getModifiers();
     foreach ($propertyNode->props as $subNode) {
         if ($subNode instanceof \PhpParser\Node\Stmt\PropertyProperty) {
             if (!is_null($property->getDefaultValueNode())) {
                 $subNode->default = $property->getDefaultValueNode();
             } else {
                 $subNode->default = $this->buildNodeFromValue($property->getDefault());
             }
         }
     }
     $this->addCommentAttributes($property, $propertyNode);
     $propertyNode->default = $property->getDefault();
     return $propertyNode;
 }