Completed
Push — master ( f4afa6...28cdc3 )
by Jean-Christophe
01:27
created

RestControllerParser::_getResourceName()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 7
rs 9.4285
cc 2
eloc 5
nc 2
nop 2
1
<?php
2
3
namespace micro\cache\parser;
4
5
use micro\orm\parser\Reflexion;
6
use micro\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
		if(\strpos($name, "\\")===false){
45
			$name=$modelsNS."\\".$name;
46
		}
47
		return $name;
48
	}
49
50
	public function asArray() {
51
		return [ClassUtils::cleanClassname($this->controllerClass)=>["resource"=>ClassUtils::cleanClassname($this->resource),"authorizations"=>$this->authorizationMethods,"route"=>$this->route]];
52
	}
53
54
	public function isRest() {
55
		return $this->rest;
56
	}
57
58
}
59