跟踪功能实例

时间:2010-07-27 08:38:33

标签: php function preload

好的,有没有办法在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
}

我从来没有见过这样做但有人知道是否有可能吗?

3 个答案:

答案 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