Exemplo n.º 1
0
 /**
  * Returns all annotations.
  * @param  ReflectionClass|\ReflectionMethod|\ReflectionProperty
  * @param  string    annotation name
  * @return array
  */
 public static function getAll(Reflector $r, $name = NULL)
 {
     $cache = AnnotationsParser::getAll($r);
     if ($name === NULL) {
         return $cache;
     } elseif (isset($cache[$name])) {
         return $cache[$name];
     } else {
         return array();
     }
 }
Exemplo n.º 2
0
 /**
  * Returns all annotations.
  * @param  ReflectionClass|ReflectionMethod|ReflectionProperty
  * @param  string    annotation name
  * @return array
  */
 public static function getAll(Reflector $r, $name = NULL)
 {
     trigger_error(__METHOD__ . '() is deprecated; use getReflection()->getAnnotations() instead.', E_USER_WARNING);
     $cache = AnnotationsParser::getAll($r);
     if ($name === NULL) {
         return $cache;
     } elseif (isset($cache[$name])) {
         return $cache[$name];
     } else {
         return array();
     }
 }
Exemplo n.º 3
0
 /**
  * Returns all annotations.
  * @return IAnnotation[][]
  */
 public function getAnnotations()
 {
     return AnnotationsParser::getAll($this);
 }
 /**
  * Iterates through all presenters and returns their actions with backlinks and arguments
  * @return array
  */
 private function generate()
 {
     $links = array();
     $depends = array();
     $iterator = new RegexIterator(new RecursiveIteratorIterator(new RecursiveDirectoryIterator(APP_DIR)), '/Presenter\\.(php|PHP)$/m', RecursiveRegexIterator::GET_MATCH);
     foreach ($iterator as $path => $match) {
         $fileinfo = pathinfo($path);
         $reflection = new ReflectionClass($this->getClassNameFromPath($path));
         if ($reflection->isInstantiable()) {
             $depends[] = $path;
             $modules = $this->getModulesFromName($reflection->name);
             $link = '';
             if ($modules !== FALSE) {
                 $link .= implode(':', $modules);
             }
             $link .= ':';
             preg_match('/(?:[A-z0-9]+?_)*([A-z0-9]+)Presenter/m', $reflection->getName(), $match);
             $presenter = $match[1];
             $link .= $presenter;
             $persistent = array();
             foreach ($reflection->getProperties() as $property) {
                 foreach (AnnotationsParser::getAll($property) as $annotation => $value) {
                     if ($annotation == 'persistent') {
                         $persistent[] = $property;
                     }
                 }
             }
             $actions = array();
             foreach ($reflection->getMethods() as $action) {
                 if (preg_match('/^(action|render)(.*)$/m', $action->getName(), $name) && !in_array($name[2], $actions)) {
                     $action_name = lcfirst($name[2]);
                     $pattern = '/Method \\[.*? ' . $action . ' \\].*? (?:Parameters .*? \\{.*?Parameter #\\d+ \\[(.*?)\\].*?\\})? }/ms';
                     $set_required = FALSE;
                     $set_optional = FALSE;
                     foreach ($action->getParameters() as $arg) {
                         if (!$arg->isOptional()) {
                             $actions[$action_name]['arguments']['required'][$arg->getName()] = NULL;
                             $set_required = TRUE;
                         } else {
                             $actions[$action_name]['arguments']['optional'][$arg->getName()] = $arg->getDefaultValue();
                             $set_optional = TRUE;
                         }
                     }
                     if (!$set_required) {
                         $actions[$action_name]['arguments']['required'] = array();
                     }
                     if (!$set_optional) {
                         $actions[$action_name]['arguments']['optional'] = array();
                     }
                     $actions[$action_name]['arguments']['persistent'] = $persistent;
                 }
             }
             if (count($actions) == 0) {
                 $actions['Default']['arguments']['required'] = array();
                 $actions['Default']['arguments']['optional'] = array();
                 $actions['Default']['arguments']['persistent'] = array();
             }
             foreach ($actions as $action => $info) {
                 $label = ':' . $link . ':' . $action;
                 if (Environment::getApplication()->getPresenter() instanceof Presenter) {
                     $links[$label]['link'] = Environment::getApplication()->getPresenter()->link($label);
                 } else {
                     $links[$label]['link'] = 'false';
                 }
                 $links[$label]['action'] = $action;
                 $links[$label]['presenter'] = $presenter;
                 $links[$label]['modules'] = $modules;
                 $links[$label]['arguments'] = $info['arguments'];
             }
         }
     }
     return array('tree' => $this->categorize($links), 'depends' => $depends);
 }