1: <?php
2:
3: /**
4: * This is in almost every respect equivalent to an array except
5: * that it keeps track of which keys were accessed.
6: *
7: * @warning For the sake of backwards compatibility with early versions
8: * of PHP 5, you must not use the $hash[$key] syntax; if you do
9: * our version of offsetGet is never called.
10: */
11: class HTMLPurifier_StringHash extends ArrayObject
12: {
13: /**
14: * @type array
15: */
16: protected $accessed = array();
17:
18: /**
19: * Retrieves a value, and logs the access.
20: * @param mixed $index
21: * @return mixed
22: */
23: #[\ReturnTypeWillChange]
24: public function offsetGet($index)
25: {
26: $this->accessed[$index] = true;
27: return parent::offsetGet($index);
28: }
29:
30: /**
31: * Returns a lookup array of all array indexes that have been accessed.
32: * @return array in form array($index => true).
33: */
34: public function getAccessed()
35: {
36: return $this->accessed;
37: }
38:
39: /**
40: * Resets the access array.
41: */
42: public function resetAccessed()
43: {
44: $this->accessed = array();
45: }
46: }
47:
48: // vim: et sw=4 sts=4
49: