Completed
Push — master ( 0feaa6...f4afa6 )
by Jean-Christophe
01:33
created

RestControllerParser   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 44
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 0
Metric Value
wmc 10
c 0
b 0
f 0
lcom 1
cbo 2
dl 0
loc 44
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
C parse() 0 23 7
A asArray() 0 3 1
A isRest() 0 3 1
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
				$modelsNS=$config["mvcNS"]["models"];
30
				$this->resource=$modelsNS."\\".$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
	public function asArray() {
44
		return [ClassUtils::cleanClassname($this->controllerClass)=>["resource"=>ClassUtils::cleanClassname($this->resource),"authorizations"=>$this->authorizationMethods,"route"=>$this->route]];
45
	}
46
47
	public function isRest() {
48
		return $this->rest;
49
	}
50
51
}
52