Ubiquity  2.0.2
php rapid development framework
RestControllerParser.php
Go to the documentation of this file.
1 <?php
2 
3 namespace Ubiquity\cache\parser;
4 
7 
9  private $controllerClass;
10  private $resource;
11  private $route;
12  private $rest;
14 
15  public function __construct() {
16  $this->rest=false;
17  $this->authorizationMethods=[ ];
18  }
19 
20  public function parse($controllerClass, $config) {
21  $this->controllerClass=$controllerClass;
22  $reflect=new \ReflectionClass($controllerClass);
23  if (!$reflect->isAbstract() && $reflect->isSubclassOf("Ubiquity\\controllers\\rest\\RestController")) {
24  $restAnnotsClass=Reflexion::getAnnotationClass($controllerClass, "@rest");
25  if (\sizeof($restAnnotsClass) > 0) {
26  $routeAnnotsClass=Reflexion::getAnnotationClass($controllerClass, "@route");
27  if (\sizeof($routeAnnotsClass) > 0) {
28  $this->route=$routeAnnotsClass[0]->path;
29  }
30  $this->resource=$this->_getResourceName($config, $restAnnotsClass[0]->resource);
31  $this->rest=true;
32  $methods=Reflexion::getMethods($controllerClass, \ReflectionMethod::IS_PUBLIC);
33  foreach ( $methods as $method ) {
34  $annots=Reflexion::getAnnotationsMethod($controllerClass, $method->name, "@authorization");
35  if ($annots !== false) {
36  $this->authorizationMethods[]=$method->name;
37  }
38  }
39  }
40  }
41  }
42 
43  private function _getResourceName($config, $name) {
44  $modelsNS=$config["mvcNS"]["models"];
45  return ClassUtils::getClassNameWithNS($modelsNS, $name);
46  }
47 
48  public function asArray() {
49  return [ ClassUtils::cleanClassname($this->controllerClass) => [ "resource" => ClassUtils::cleanClassname($this->resource),"authorizations" => $this->authorizationMethods,"route" => $this->route ] ];
50  }
51 
52  public function isRest() {
53  return $this->rest;
54  }
55 }
static getAnnotationsMethod($class, $method, $annotation)
Definition: Reflexion.php:88
static getAnnotationClass($class, $annotation)
Definition: Reflexion.php:76
static getClassNameWithNS($defaultNS, $name)
Definition: ClassUtils.php:122
static getMethods($instance, $filter=null)
Definition: Reflexion.php:24
static cleanClassname($classname)
Definition: ClassUtils.php:20