Completed
Push — master ( 4e6026...e0b9fa )
by Jean-Christophe
01:30
created

RestControllerParser::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 0
1
<?php
2
3
namespace Ubiquity\cache\parser;
4
5
use Ubiquity\orm\parser\Reflexion;
6
use Ubiquity\cache\ClassUtils;
7
8
class RestControllerParser {
9
	private $controllerClass;
10
	private $resource;
11
	private $route;
12
	private $rest;
13
	private $authorizationMethods;
14
15
	public function __construct(){
16
		$this->rest=false;
17
		$this->authorizationMethods=[];
18
	}
19
	public function parse($controllerClass,$config) {
20
		$this->controllerClass=$controllerClass;
21
		$reflect=new \ReflectionClass($controllerClass);
22
		if (!$reflect->isAbstract() && $reflect->isSubclassOf("micro\\controllers\\rest\\RestController")) {
23
			$restAnnotsClass=Reflexion::getAnnotationClass($controllerClass, "@rest");
24
			if (\sizeof($restAnnotsClass) > 0){
25
				$routeAnnotsClass=Reflexion::getAnnotationClass($controllerClass, "@route");
26
				if(\sizeof($routeAnnotsClass)>0){
27
					$this->route=$routeAnnotsClass[0]->path;
28
				}
29
				$this->resource=$this->_getResourceName($config,$restAnnotsClass[0]->resource);
30
				$this->rest=true;
31
				$methods=Reflexion::getMethods($controllerClass, \ReflectionMethod::IS_PUBLIC);
32
				foreach ( $methods as $method ) {
33
					$annots=Reflexion::getAnnotationsMethod($controllerClass, $method->name, "@authorization");
34
					if($annots!==false){
35
						$this->authorizationMethods[]=$method->name;
36
					}
37
				}
38
			}
39
		}
40
	}
41
42
	private function _getResourceName($config,$name){
43
		$modelsNS=$config["mvcNS"]["models"];
44
		return ClassUtils::getClassNameWithNS($modelsNS, $name);
45
	}
46
47
	public function asArray() {
48
		return [ClassUtils::cleanClassname($this->controllerClass)=>["resource"=>ClassUtils::cleanClassname($this->resource),"authorizations"=>$this->authorizationMethods,"route"=>$this->route]];
49
	}
50
51
	public function isRest() {
52
		return $this->rest;
53
	}
54
55
}
56