HTMLPurifier_Context::loadArray()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 2
eloc 2
nc 2
nop 1
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
     * @type array
16
     */
17
    private $_storage = array();
18
19
    /**
20
     * Registers a variable into the context.
21
     * @param string $name String name
22
     * @param mixed $ref Reference to variable to be registered
23
     */
24
    public function register($name, &$ref)
25
    {
26
        if (array_key_exists($name, $this->_storage)) {
27
            trigger_error(
28
                "Name $name produces collision, cannot re-register",
29
                E_USER_ERROR
30
            );
31
            return;
32
        }
33
        $this->_storage[$name] =& $ref;
34
    }
35
36
    /**
37
     * Retrieves a variable reference from the context.
38
     * @param string $name String name
39
     * @param bool $ignore_error Boolean whether or not to ignore error
40
     * @return mixed
41
     */
42
    public function &get($name, $ignore_error = false)
43
    {
44
        if (!array_key_exists($name, $this->_storage)) {
45
            if (!$ignore_error) {
46
                trigger_error(
47
                    "Attempted to retrieve non-existent variable $name",
48
                    E_USER_ERROR
49
                );
50
            }
51
            $var = null; // so we can return by reference
52
            return $var;
53
        }
54
        return $this->_storage[$name];
55
    }
56
57
    /**
58
     * Destroys a variable in the context.
59
     * @param string $name String name
60
     */
61
    public function destroy($name)
62
    {
63
        if (!array_key_exists($name, $this->_storage)) {
64
            trigger_error(
65
                "Attempted to destroy non-existent variable $name",
66
                E_USER_ERROR
67
            );
68
            return;
69
        }
70
        unset($this->_storage[$name]);
71
    }
72
73
    /**
74
     * Checks whether or not the variable exists.
75
     * @param string $name String name
76
     * @return bool
77
     */
78
    public function exists($name)
79
    {
80
        return array_key_exists($name, $this->_storage);
81
    }
82
83
    /**
84
     * Loads a series of variables from an associative array
85
     * @param array $context_array Assoc array of variables to load
86
     */
87
    public function loadArray($context_array)
88
    {
89
        foreach ($context_array as $key => $discard) {
90
            $this->register($key, $context_array[$key]);
91
        }
92
    }
93
}
94
95
// vim: et sw=4 sts=4
96