예제 #1
0
 /**
  * @param Listener $listener
  * @param int              $priority
  *
  * @return array
  */
 private function createWorkersFromStandardListener(Listener $listener, $priority = null)
 {
     $workers = array();
     $reflectedListener = new \ReflectionClass($listenerClass = get_class($listener));
     foreach ($reflectedListener->getMethods() as $method) {
         if (!$method->isPublic() || $method->getNumberOfParameters() > 1 || !($param = current($method->getParameters()))) {
             continue;
         }
         if (($eventClassName = $this->getEventClassNameFromParam($param)) === null) {
             continue;
         }
         if ($priority === null) {
             $workerPriority = $this->priorityResolver->getPriorityFromDocComment($method->getDocComment());
             if ($workerPriority === null) {
                 $workerPriority = Priority::NORMAL;
             }
         } else {
             $workerPriority = $priority;
         }
         $workers[] = new Worker($this->generateWorkerId(), $listener, $method->name, $eventClassName, $workerPriority);
     }
     return $workers;
 }
 public function testReturnsNullOnInvalidEmptyDocComment()
 {
     $resolver = new PriorityResolver();
     $value = $resolver->getPriorityFromDocComment('@priority', null);
     $this->assertNull($value);
 }