public function testAllowsMultipleParsingStrategies() { $genericParser = new Annotation\Parser\GenericAnnotationParser(); $genericParser->registerAnnotation(__NAMESPACE__ . '\\TestAsset\\Foo'); $doctrineParser = new Annotation\Parser\DoctrineAnnotationParser(); $doctrineParser->registerAnnotation(__NAMESPACE__ . '\\TestAsset\\DoctrineAnnotation'); $this->manager->attach($genericParser); $this->manager->attach($doctrineParser); $reflection = new Reflection\ClassReflection(__NAMESPACE__ . '\\TestAsset\\EntityWithMixedAnnotations'); $prop = $reflection->getProperty('test'); $annotations = $prop->getAnnotations($this->manager); $this->assertTrue($annotations->hasAnnotation(__NAMESPACE__ . '\\TestAsset\\Foo')); $this->assertTrue($annotations->hasAnnotation(__NAMESPACE__ . '\\TestAsset\\DoctrineAnnotation')); $this->assertFalse($annotations->hasAnnotation(__NAMESPACE__ . '\\TestAsset\\Bar')); foreach ($annotations as $annotation) { switch (get_class($annotation)) { case __NAMESPACE__ . '\\TestAsset\\Foo': $this->assertEquals('first', $annotation->content); break; case __NAMESPACE__ . '\\TestAsset\\DoctrineAnnotation': $this->assertEquals(array('foo' => 'bar', 'bar' => 'baz'), $annotation->value); break; default: $this->fail('Received unexpected annotation "' . get_class($annotation) . '"'); } } }
/** * @param ServiceLocatorInterface $serviceLocator * @return AnnotationManager */ public function createService(ServiceLocatorInterface $serviceLocator) { $annotationManager = new AnnotationManager(); $parser = new DoctrineAnnotationParser(); $parser->registerAnnotation('AnnotatedRouter\\Annotation\\Route'); $annotationManager->attach($parser); return $annotationManager; }
/** * Set annotation manager to use when building form from annotations * * @param AnnotationManager $annotationManager * @return AnnotationBuilder */ public function setAnnotationManager(AnnotationManager $annotationManager) { parent::setAnnotationManager($annotationManager); $parser = new Parser\DoctrineAnnotationParser(); $parser->registerAnnotation('Doctrine\\ORM\\Mapping\\Column'); $parser->registerAnnotation('Doctrine\\ORM\\Mapping\\GeneratedValue'); $this->annotationManager->attach($parser); return $this; }
/** * Set annotation manager to use when building form from annotations * * @param AnnotationManager $annotationManager * @return AnnotationBuilder */ public function setAnnotationManager(AnnotationManager $annotationManager) { $parser = new Parser\DoctrineAnnotationParser(); foreach ($this->defaultAnnotations as $annotationName) { $class = __NAMESPACE__ . '\\' . $annotationName; $parser->registerAnnotation($class); } $annotationManager->attach($parser); $this->annotationManager = $annotationManager; return $this; }
/** * * @param string $class * @param array $config * @return ClassAnnotationHolder */ public function parse($class, array $config = array()) { $annotationManager = new AnnotationManager(); $parser = new DoctrineAnnotationParser(); $parser->registerAnnotation(Route::class); $parser->registerAnnotation(Service::class); $parser->registerAnnotation(Controller::class); $parser->registerAnnotation(ControllerPlugin::class); $parser->registerAnnotation(Filter::class); $parser->registerAnnotation(FormElement::class); $parser->registerAnnotation(Hydrator::class); $parser->registerAnnotation(InputFilter::class); $parser->registerAnnotation(LogProcessor::class); $parser->registerAnnotation(LogWriter::class); $parser->registerAnnotation(Route::class); $parser->registerAnnotation(RoutePlugin::class); $parser->registerAnnotation(Serializer::class); $parser->registerAnnotation(Validator::class); $parser->registerAnnotation(ViewHelper::class); $annotationManager->attach($parser); $scanner = new DirectoryScanner('.'); $class = $scanner->getClass($class); $eventManager = new EventManager(); $parser = new ClassParser($config, $annotationManager, $eventManager); return $this->handleClassAnnotations($parser->parseClass($class), $config); }
/** * * @param array $annotations * @return DoctrineAnnotationParser */ public static function factory(array $annotations) { $parser = new DoctrineAnnotationParser(); $parser->registerAnnotations($annotations); return $parser; }
<?php namespace KJSencha; use KJSencha\Direct\Remoting\Api\Factory\ApiBuilder; use KJSencha\Direct\DirectManager; use KJSencha\Service\TestEchoService; use KJSencha\Frontend\Bootstrap; use Zend\Cache\StorageFactory; use Zend\Code\Annotation\AnnotationManager; use Zend\Code\Annotation\Parser\DoctrineAnnotationParser; use Zend\ServiceManager\ServiceLocatorInterface; use Zend\ServiceManager\ServiceManager; return array('factories' => array('kjsencha.api' => 'KJSencha\\Service\\ApiFactory', 'kjsencha.componentmanager' => 'KJSencha\\Service\\ComponentManagerFactory', 'kjsencha.annotationmanager' => function () { $doctrineParser = new DoctrineAnnotationParser(); $doctrineParser->registerAnnotation('KJSencha\\Annotation\\Remotable'); $doctrineParser->registerAnnotation('KJSencha\\Annotation\\Interval'); $doctrineParser->registerAnnotation('KJSencha\\Annotation\\Formhandler'); $doctrineParser->registerAnnotation('KJSencha\\Annotation\\Group'); $annotationManager = new AnnotationManager(); $annotationManager->attach($doctrineParser); return $annotationManager; }, 'kjsencha.apibuilder' => function (ServiceLocatorInterface $sl) { /* @var $annotationManager AnnotationManager */ $annotationManager = $sl->get('kjsencha.annotationmanager'); /* @var $directManager DirectManager */ $directManager = $sl->get('kjsencha.direct.manager'); return new ApiBuilder($annotationManager, $directManager); }, 'kjsencha.cache' => function (ServiceLocatorInterface $sl) { $config = $sl->get('Config'); $storage = StorageFactory::factory($config['kjsencha']['cache']);