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 */ 11class 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 public function offsetGet($index) 24 { 25 $this->accessed[$index] = true; 26 return parent::offsetGet($index); 27 } 28 29 /** 30 * Returns a lookup array of all array indexes that have been accessed. 31 * @return array in form array($index => true). 32 */ 33 public function getAccessed() 34 { 35 return $this->accessed; 36 } 37 38 /** 39 * Resets the access array. 40 */ 41 public function resetAccessed() 42 { 43 $this->accessed = array(); 44 } 45} 46 47// vim: et sw=4 sts=4 48