Completed
Push — master ( 7c92dc...c428b0 )
by Jean-Christophe
01:30
created

ModelsCacheTrait::initModelsCache()   B

Complexity

Conditions 5
Paths 8

Size

Total Lines 14
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 14
rs 8.8571
cc 5
eloc 9
nc 8
nop 3
1
<?php
2
namespace micro\cache\traits;
3
4
use micro\orm\parser\ModelParser;
5
use micro\cache\ClassUtils;
6
7
/**
8
 * @author jc
9
 * @static array $cache
10
 */
11
trait ModelsCacheTrait{
12
13
	public static function createOrmModelCache($classname) {
14
		$key=self::getModelCacheKey($classname);
15
		if(isset(self::$cache)){
16
			if (!self::$cache->exists($key)) {
17
				$p=new ModelParser();
18
				$p->parse($classname);
19
				self::$cache->store($key, $p->__toString());
20
			}
21
			return self::$cache->fetch($key);
22
		}
23
	}
24
25
	public static function getOrmModelCache($classname) {
26
		return self::$cache->fetch(self::getModelCacheKey($classname));
27
	}
28
29
	public static function getModelCacheKey($classname){
30
		return \str_replace("\\", DIRECTORY_SEPARATOR, $classname);
31
	}
32
33
	public static function modelCacheExists($classname){
34
		$key=self::getModelCacheKey($classname);
35
		if(isset(self::$cache))
36
			return self::$cache->exists($key);
37
			return false;
38
	}
39
40
	public static function initModelsCache(&$config,$forChecking=false,$silent=false) {
41
		$files=self::getModelsFiles($config,$silent);
42
		foreach ( $files as $file ) {
43
			if (is_file($file)) {
44
				$model=ClassUtils::getClassFullNameFromFile($file);
45
				if(!$forChecking){
46
					self::createOrmModelCache($model);
47
				}
48
			}
49
		}
50
		if(!$silent){
51
			echo "Models cache reset\n";
52
		}
53
	}
54
55
	public static function getModelsFiles(&$config,$silent=false){
56
		return self::_getFiles($config, "models",$silent);
57
	}
58
59
	public static function getModels(&$config,$silent=false){
60
		$result=[];
61
		$files=self::getModelsFiles($config,$silent);
62
		foreach ($files as $file){
63
			$result[]=ClassUtils::getClassFullNameFromFile($file);
64
		}
65
		return $result;
66
	}
67
68
}
69