Completed
Push — master ( 1a59cb...7c1957 )
by Jean-Christophe
04:31
created

EventsManager::store()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 2
ccs 0
cts 2
cp 0
crap 2
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Ubiquity\events;
4
5
use Ubiquity\cache\CacheManager;
6
use Ubiquity\utils\base\UArray;
7
8
/**
9
 * Manage events
10
 * @author jc
11
 *
12
 */
13
class EventsManager {
14
	private static $key="events/events";
15
	/**
16
	 * @var array|mixed
17
	 */
18
	protected static $managedEvents=[];
19 1
	public static function start(){
20 1
		if(CacheManager::$cache->exists(self::$key)){
21
			self::$managedEvents=CacheManager::$cache->fetch(self::$key);
22
		}
23 1
	}
24
	
25
	public static function addListener($eventName,$action){
26
		if(!isset(self::$managedEvents[$eventName])){
27
			self::$managedEvents[$eventName]=[];
28
		}
29
		self::$managedEvents[$eventName][]=$action;
30
	}
31
	
32
	public static function store(){
33
		CacheManager::$cache->store(self::$key, "return ".UArray::asPhpArray(self::$managedEvents,'array').';');
34
	}
35
	
36 12
	public static function trigger($eventName,&...$params){
37 12
		if(isset(self::$managedEvents[$eventName])){
38
			foreach (self::$managedEvents[$eventName] as $action){
39
				self::triggerOne($action,$params);
40
			}
41
		}
42 12
	}
43
	
44
	private static function triggerOne($action,&$params){
45
		if(is_callable($action)){
46
			call_user_func_array($action, $params);
47
		}elseif(is_subclass_of($action, EventListenerInterface::class)){
48
			call_user_func_array([new $action(),"on"], $params);
49
		}
50
	}
51
}
52
53