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;
 }
示例#7
0
<?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']);