Requests_Hooks::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 0
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
/**
3
 * Handles adding and dispatching events
4
 *
5
 * @package Requests
6
 * @subpackage Utilities
7
 */
8
9
/**
10
 * Handles adding and dispatching events
11
 *
12
 * @package Requests
13
 * @subpackage Utilities
14
 */
15
class Requests_Hooks implements Requests_Hooker {
16
	/**
17
	 * Registered callbacks for each hook
18
	 *
19
	 * @var array
20
	 */
21
	protected $hooks = array();
22
23
	/**
24
	 * Constructor
25
	 */
26
	public function __construct() {
27
		// pass
28
	}
29
30
	/**
31
	 * Register a callback for a hook
32
	 *
33
	 * @param string $hook Hook name
34
	 * @param callback $callback Function/method to call on event
35
	 * @param int $priority Priority number. <0 is executed earlier, >0 is executed later
36
	 */
37
	public function register($hook, $callback, $priority = 0) {
38
		if (!isset($this->hooks[$hook])) {
39
			$this->hooks[$hook] = array();
40
		}
41
		if (!isset($this->hooks[$hook][$priority])) {
42
			$this->hooks[$hook][$priority] = array();
43
		}
44
45
		$this->hooks[$hook][$priority][] = $callback;
46
	}
47
48
	/**
49
	 * Dispatch a message
50
	 *
51
	 * @param string $hook Hook name
52
	 * @param array $parameters Parameters to pass to callbacks
53
	 * @return boolean Successfulness
54
	 */
55
	public function dispatch($hook, $parameters = array()) {
56
		if (empty($this->hooks[$hook])) {
57
			return false;
58
		}
59
60
		foreach ($this->hooks[$hook] as $priority => $hooked) {
61
			foreach ($hooked as $callback) {
62
				call_user_func_array($callback, $parameters);
63
			}
64
		}
65
66
		return true;
67
	}
68
}
69