/** * Build generators * * @param State|\Scaffold\State $state * @return \Scaffold\State|void */ public function build(State $state) { $model = $state->getModel('options-trait'); $options = $state->getModel('options'); $generator = new TraitGenerator($model->getName()); $generator->addUse($options->getName()); $generator->addUse($state->getModel('RuntimeException')->getName()); $generator->addUse('Zend\\ServiceManager\\ServiceLocatorAwareInterface'); $generator->addUse('Zend\\ServiceManager\\ServiceLocatorInterface'); $property = lcfirst($options->getClassName()); $class = $options->getClassName(); $alias = $options->getServiceName(); $code = <<<EOF if (null === \$this->{$property}) { if (\$this instanceof ServiceLocatorAwareInterface || method_exists(\$this, 'getServiceLocator')) { \$this->{$property} = \$this->getServiceLocator()->get('{$alias}'); } else { if (property_exists(\$this, 'serviceLocator') && \$this->serviceLocator instanceof ServiceLocatorInterface ) { \$this->{$property} = \$this->serviceLocator->get('{$alias}'); } else { throw new RuntimeException('Service locator not found'); } } } return \$this->{$property}; EOF; $this->addProperty($generator, $property, $class); $this->addSetter($generator, $property, $class); $getter = $this->getGetter($property, $class); $getter->setBody($code); $getter->getDocBlock()->setTag(new Tag(['name' => 'throws', 'description' => $state->getModel('RuntimeException')->getClassName()])); $generator->addMethodFromGenerator($getter); // $model->setGenerator($generator); }
/** * Build generators * * @param State|\Scaffold\State $state * @return \Scaffold\State|void */ public function build(State $state) { $model = $this->model; $generator = new TraitGenerator($model->getName()); $generator->addUse($state->getRepositoryModel()->getName()); $property = lcfirst($state->getRepositoryModel()->getClassName()); $class = $state->getRepositoryModel()->getClassName(); $entity = $state->getEntityModel()->getName(); $code = <<<EOF if (null === \$this->{$property}) { \$this->{$property} = \$this->getEntityManager()->getRepository('{$entity}'); } return \$this->{$property}; EOF; $this->addProperty($generator, $property, $class); $this->addSetter($generator, $property, $class); $getter = $this->getGetter($property, $class); $getter->setBody($code); $generator->addMethodFromGenerator($getter); // $model->setGenerator($generator); }