/** * Build generators * * @param State|\Scaffold\State $state * @return \Scaffold\State|void */ public function build(State $state) { $model = $this->model; $generator = new ClassGenerator($model->getName()); $generator->addUse('Zend\\ServiceManager\\FactoryInterface'); $generator->addUse('Zend\\ServiceManager\\ServiceLocatorInterface'); $generator->addUse('Zend\\ServiceManager\\ServiceManager'); $generator->addUse($state->getServiceModel()->getName()); $generator->setImplementedInterfaces(['FactoryInterface']); $method = new MethodGenerator('createService'); $method->setParameter(new ParameterGenerator('serviceLocator', 'ServiceLocatorInterface')); $method->setBody('return new ' . $state->getServiceModel()->getClassName() . '($serviceLocator);'); $doc = new DocBlockGenerator('Create service'); $doc->setTag(new Tag\GenericTag('param', 'ServiceLocatorInterface|ServiceManager $serviceLocator')); $doc->setTag(new Tag\GenericTag('return', $state->getServiceModel()->getClassName())); $method->setDocBlock($doc); $generator->addMethodFromGenerator($method); $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->getServiceModel()->getName()); $generator->addUse($state->getModel('RuntimeException')->getName()); $generator->addUse('Zend\\ServiceManager\\ServiceLocatorAwareInterface'); $generator->addUse('Zend\\ServiceManager\\ServiceLocatorInterface'); $property = lcfirst($state->getServiceModel()->getClassName()); $class = $state->getServiceModel()->getClassName(); $alias = $state->getServiceModel()->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\GenericTag('throws', $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 = $state->getServiceModel(); $generator = new ClassGenerator($model->getName()); $generator->setImplementedInterfaces(['ServiceLocatorAwareInterface']); $generator->addUse('Doctrine\\ORM\\EntityManager'); $generator->addUse($state->getEntityModel()->getName()); $generator->addUse($state->getModel('NotFoundException')->getName()); $generator->addUse($state->getModel('repository-trait')->getName()); $generator->addUse('Zend\\ServiceManager\\ServiceLocatorAwareInterface'); $generator->addUse('Zend\\ServiceManager\\ServiceLocatorAwareTrait'); $generator->addUse('Zend\\ServiceManager\\ServiceLocatorInterface'); $generator->addTrait('ServiceLocatorAwareTrait'); $generator->addTrait($state->getModel('repository-trait')->getClassName()); $this->addProperty($generator, 'entityManager', 'EntityManager'); $this->buildConstructor($generator); $this->buildLoadById($generator, $state); $this->buildSearch($generator, $state); $this->buildSave($generator, $state); $this->buildDelete($generator, $state); $this->buildEntityManager($generator); $this->buildFactory($generator, $state); $model->setGenerator($generator); }
/** * @param ClassGenerator $generator * @param State $state */ public function addGetObject(ClassGenerator $generator, State $state) { $className = $state->getServiceModel()->getClassName(); $doc = "@param array \$methods\n@return \\PHPUnit_Framework_MockObject_MockObject|" . $className; $class = $state->getServiceModel()->getName(); $repository = ucfirst($state->getRepositoryModel()->getClassName()); $body = <<<EOF if (count(\$methods)) { \$object = \$this->getMockBuilder('{$class}') ->disableOriginalConstructor() ->setMethods(\$methods) ->getMock(); } else { \$object = new {$className}(\$this->getServiceManager()); } \$object->set{$repository}(\$this->getRepository()); \$object->setEntityManager(\$this->getEntityManager()); return \$object; EOF; $method = new MethodGenerator('getObject', [], MethodGenerator::FLAG_PUBLIC, $body, $doc); $method->setParameter(new ParameterGenerator('methods', 'array', [])); $generator->addMethodFromGenerator($method); }
public function buildEditAction(ClassGenerator $generator, State $state) { $service = 'get' . $state->getServiceModel()->getClassName(); $name = lcfirst($state->getEntityModel()->getClassName()); $method = new MethodGenerator('editAction'); $method->setDocBlock(new DocBlockGenerator('Show one entity')); $method->setBody(<<<EOF \$id = \$this->params()->fromRoute('id'); \${$name} = \$this->{$service}()->loadById(\$id); /** @var Form \$form */ \$form = \$this->getServiceLocator()->get('{$state->getFormFactoryModel()->getServiceName()}'); \$form->bind(\${$name}); if (\$this->getRequest()->isPost()) { \$form->setData(\$this->params()->fromPost()); if (\$form->isValid()) { \$this->{$service}()->save(\${$name}); \$this->getEntityManager()->flush(); \$this->flashMessenger()->addSuccessMessage('Saved'); \$this->redirect()->toRoute('home'); } } return array( 'form' => \$form ); EOF ); $generator->addMethodFromGenerator($method); }