]>
Commit | Line | Data |
---|---|---|
f45a286b AD |
1 | <?php |
2 | ||
3 | /** | |
4 | * Registry object that contains information about the current context. | |
5 | * @warning Is a bit buggy when variables are set to null: it thinks | |
6 | * they don't exist! So use false instead, please. | |
7 | * @note Since the variables Context deals with may not be objects, | |
8 | * references are very important here! Do not remove! | |
9 | */ | |
10 | class HTMLPurifier_Context | |
11 | { | |
12 | ||
13 | /** | |
14 | * Private array that stores the references. | |
15 | */ | |
16 | private $_storage = array(); | |
17 | ||
18 | /** | |
19 | * Registers a variable into the context. | |
20 | * @param $name String name | |
21 | * @param $ref Reference to variable to be registered | |
22 | */ | |
23 | public function register($name, &$ref) { | |
24 | if (isset($this->_storage[$name])) { | |
25 | trigger_error("Name $name produces collision, cannot re-register", | |
26 | E_USER_ERROR); | |
27 | return; | |
28 | } | |
29 | $this->_storage[$name] =& $ref; | |
30 | } | |
31 | ||
32 | /** | |
33 | * Retrieves a variable reference from the context. | |
34 | * @param $name String name | |
35 | * @param $ignore_error Boolean whether or not to ignore error | |
36 | */ | |
37 | public function &get($name, $ignore_error = false) { | |
38 | if (!isset($this->_storage[$name])) { | |
39 | if (!$ignore_error) { | |
40 | trigger_error("Attempted to retrieve non-existent variable $name", | |
41 | E_USER_ERROR); | |
42 | } | |
43 | $var = null; // so we can return by reference | |
44 | return $var; | |
45 | } | |
46 | return $this->_storage[$name]; | |
47 | } | |
48 | ||
49 | /** | |
50 | * Destorys a variable in the context. | |
51 | * @param $name String name | |
52 | */ | |
53 | public function destroy($name) { | |
54 | if (!isset($this->_storage[$name])) { | |
55 | trigger_error("Attempted to destroy non-existent variable $name", | |
56 | E_USER_ERROR); | |
57 | return; | |
58 | } | |
59 | unset($this->_storage[$name]); | |
60 | } | |
61 | ||
62 | /** | |
63 | * Checks whether or not the variable exists. | |
64 | * @param $name String name | |
65 | */ | |
66 | public function exists($name) { | |
67 | return isset($this->_storage[$name]); | |
68 | } | |
69 | ||
70 | /** | |
71 | * Loads a series of variables from an associative array | |
72 | * @param $context_array Assoc array of variables to load | |
73 | */ | |
74 | public function loadArray($context_array) { | |
75 | foreach ($context_array as $key => $discard) { | |
76 | $this->register($key, $context_array[$key]); | |
77 | } | |
78 | } | |
79 | ||
80 | } | |
81 | ||
82 | // vim: et sw=4 sts=4 |