好的,有没有办法在php中跟踪函数调用,如
function Tracker($name,$returnedValue,$file,$line)
{
echo $name . '() was called and returned a ' . typeof(returnedValue);
}
function test(){}
test();
这样做的原因是发回一个自定义框架数据类型,所以另一个例子是
$resource = fopen('php://stdin'); //This would return an instance of (Object)Resource.
if($resource->type == 'fopen')
{
//Code
}
我从来没有见过这样做但有人知道是否有可能吗?
答案 0 :(得分:2)
使用PHP不可能做到这一点,调试器可能有帮助,但是你可以包装函数:
function wrapper()
{
$args=func_get_args();
$function=array_shift($args);
$returned=call_user_func_array($function, $args);
print "$function (" . var_export($args, true) . ") = "
. var_export($returned, true) . "\n";
return $returned;
}
$value=wrapper('test_fn', 1 ,2 ,3, 'something');
$value=wrapper('mysql_connect');
我不明白你对这里要做的事情的解释。
下进行。
答案 1 :(得分:1)
不是真的。 Xdebug能够记录函数调用:http://xdebug.org/docs/execution_trace
答案 2 :(得分:0)
也许你想要像Observer模式这样的东西? http://en.wikipedia.org/wiki/Observer_pattern