在使用遗留代码时,我想监视对某个数组的所有访问(数组只使用字符串作为键),即读取和写入访问。特别是,现在很高兴在访问期间使用哪些密钥。
有没有一种快速简便的方法来实现PHP(语言+分机库)?
在某些代码编辑器中使用“在文件中查找”并不是最佳解决方案,因为该过程应该是自动化的。
答案 0 :(得分:0)
所以,这是一个可能的解决方案。我使用了来自http://www.php.net/manual/en/class.arrayaccess.php的基本示例,并通过记录每个访问并提供读取日志的方法来扩展它。它没有什么特别之处,但帮助我跟踪脚本访问我的数组的不同位置。
class logging_array implements ArrayAccess
{
private $container = array();
private $access_log = array();
public function offsetSet($offset, $value)
{
if (is_null($offset))
{
$this->container[] = $value;
}
else
{
$this->access_log[] = "SET: " . $offset;
$this->container[$offset] = $value;
}
}
public function offsetExists($offset)
{
return isset($this->container[$offset]);
}
public function offsetUnset($offset)
{
$this->access_log[] = "UNSET: " . $offset;
unset($this->container[$offset]);
}
public function &offsetGet($offset)
{
$this->access_log[] = "GET: " . $offset . " (". (isset($this->container[$offset]) ? "key valid" : "key invalid") . ")";
if (isset($this->container[$offset]))
{
$myref =& $this->container[$offset];
return $myref;
}
else
{
return null;
}
}
public function getLog()
{
return implode("<br>\n", $this->access_log);
}
}