/** * @param ParseEvent $event */ public function onClassParsed(ParseEvent $event) { $this->cacheControllers($event->getParam('config')); // handle class annotations $classHolder = $event->getTarget(); $classAnnotationsCollection = $classHolder->getAnnotations(); $classAnnotations = new AnnotationCollection(); foreach ($classAnnotationsCollection as $annotation) { if (!$annotation instanceof Route) { continue; } $classAnnotations->append($annotation); $this->handleClassAnnotation($annotation, $classHolder->getClass()); } // handle annotations per method foreach ($classHolder->getMethods() as $methodHolder) { foreach ($methodHolder->getAnnotations() as $methodAnnotation) { if (!$methodAnnotation instanceof Route) { continue; } $this->handleMethodAnnotation($methodAnnotation, $classAnnotations, $classHolder->getClass(), $methodHolder->getMethod()); } } $event->mergeResult(array('router' => array('routes' => $this->config))); }
public function onClassParsed(ParseEvent $event) { $this->resolveControllers($event->getParam('config')); $classHolder = $event->getTarget(); $methodHolders = $classHolder->getMethods(); $config = []; foreach ($methodHolders as $methodHolder) { foreach ($methodHolder->getAnnotations() as $annotation) { $controller = $classHolder->getClass()->getName(); if (isset($this->controllers[$controller])) { $controller = $this->controllers[$controller]; } $method = preg_replace('/Action$/', '', $methodHolder->getMethod()->getName()); if ($annotation instanceof Asserts) { foreach ($annotation->getNames() as $name) { $options = empty($annotation->getOptions()[$name]) ? [] : $annotation->getOptions()[$name]; $config['asserts'][$controller][$method][] = ['assert' => $name, 'options' => $options]; } } if ($annotation instanceof Assert) { $config['asserts'][$controller][$method][] = ['assert' => $annotation->getName(), 'options' => $annotation->getOptions()]; } } } $event->mergeResult($config); }
/** * * @param ParseEvent $event */ public function onFinalize(ParseEvent $event) { $config = $event->getTarget(); array_walk_recursive($config, function (&$value, $key) use($config) { if (is_object($value)) { $value = $value($config); } }); $event->setTarget($config); }
/** * @param ParseEvent $event */ public function onClassParsed(ParseEvent $event) { $classHolder = $event->getTarget(); $classAnnotations = $classHolder->getAnnotations(); foreach ($classAnnotations as $annotation) { if (!$annotation instanceof Service) { continue; } $this->handleClassAnnotation($annotation, $classHolder->getClass()); } $event->mergeResult($this->definitions); }
public function onClassParsed(ParseEvent $event) { $classHolder = $event->getTarget(); $classAnnotations = $classHolder->getAnnotations(); foreach ($classAnnotations as $annotation) { if ($annotation instanceof Toggle && !$this->isActive($annotation->getName())) { throw new \RuntimeException(); } } $methodHolders = $classHolder->getMethods(); foreach ($methodHolders as $methodHolder) { foreach ($methodHolder->getAnnotations() as $annotation) { if ($annotation instanceof Toggle && !$this->isActive($annotation->getName())) { throw new \RuntimeException(); } } } }
public function onClassParsed(ParseEvent $event) { $this->resolveControllers($event->getParam('config')); $config = array(); $classHolder = $event->getTarget(); $controller = $classHolder->getClass()->getName(); if (isset($this->controllers[$controller])) { $controller = $this->controllers[$controller]; } foreach ($classHolder->getAnnotations() as $classAnnotation) { if ($classAnnotation instanceof Acl) { $allow = $classAnnotation->getAllow(); $deny = $classAnnotation->getDeny(); if ($allow) { $config['acl']['resources']['allow'][$controller]['*'] = $allow; } if ($deny) { $config['acl']['resources']['deny'][$controller]['*'] = $deny; } } } $methodHolders = $classHolder->getMethods(); foreach ($methodHolders as $methodHolder) { foreach ($methodHolder->getAnnotations() as $annotation) { if ($annotation instanceof Acl) { $method = preg_replace('/Action$/', '', $methodHolder->getMethod()->getName()); $allow = $annotation->getAllow(); $deny = $annotation->getDeny(); if ($allow) { $config['acl']['resources']['allow'][$controller][$method] = $allow; } if ($deny) { $config['acl']['resources']['deny'][$controller][$method] = $deny; } } } } $event->mergeResult($config); }
public function setUp() { $this->parseEvent = new ParseEvent(); $this->parseEvent->setName('onClassParsed')->setTarget(new ClassAnnotationHolder(new ClassScanner([]))); $this->listener = new ToggleListener(); }