Passed
Push — master ( ed813f...432706 )
by Jean-Christophe
02:43
created

RestCacheTrait::getRestCache()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 4
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 2.0625

Importance

Changes 0
Metric Value
cc 2
eloc 3
nc 2
nop 0
dl 0
loc 4
ccs 3
cts 4
cp 0.75
crap 2.0625
rs 10
c 0
b 0
f 0
1
<?php
2
namespace Ubiquity\cache\traits;
3
4
use Ubiquity\cache\ClassUtils;
5
use Ubiquity\cache\parser\RestControllerParser;
6
use Ubiquity\utils\base\UArray;
7
use Ubiquity\exceptions\RestException;
8
9
/**
10
 * @author jc
11
 * @staticvar array $cache
12
 *
13
 */
14
trait RestCacheTrait{
15
16
	private static function initRestCache(&$config,$silent=false) {
17
		$restCache=[];
18
		$files=self::getControllersFiles($config);
19
		foreach ( $files as $file ) {
20
			if (is_file($file)) {
21
				$controller=ClassUtils::getClassFullNameFromFile($file);
22
				$parser=new RestControllerParser();
23
				$parser->parse($controller,$config);
24
				if($parser->isRest())
25
					$restCache=\array_merge($restCache,$parser->asArray());
26
			}
27
		}
28
		self::$cache->store("controllers/rest", "return " . UArray::asPhpArray($restCache, "array") . ";",'controllers');
29
		if(!$silent){
30
			echo "Rest cache reset\n";
31
		}
32
	}
33
34
	public static function getRestRoutes() {
35
		$result=[];
36
		$restCache=self::getRestCache();
37
		foreach ($restCache as $controllerClass=>$restAttributes){
38
			if(isset($restCache[$controllerClass])){
39
				$result[$controllerClass]=["restAttributes"=>$restAttributes,"routes"=>self::getControllerRoutes($controllerClass,true)];
40
			}
41
		}
42
		return $result;
43
	}
44
45 1
	public static function getRestCache() {
46 1
		if (self::$cache->exists("controllers/rest"))
47 1
			return self::$cache->fetch("controllers/rest");
48
			throw new RestException("Rest cache entry `".self::$cache->getEntryKey("controllers/rest")."` is missing.\nTry to Re-init Rest cache.");
49
	}
50
51
	public static function getRestResource($controllerClass){
52
		$cacheControllerClass=self::getRestCacheController($controllerClass);
53
		if(isset($cacheControllerClass))
54
			return $cacheControllerClass["resource"];
55
		return null;
56
	}
57
58 1
	public static function getRestCacheController($controllerClass){
59 1
		$cache=self::getRestCache();
60 1
		if(isset($cache[$controllerClass])){
61 1
			return $cache[$controllerClass];
62
		}
63
		return null;
64
	}
65
}
66