1

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

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

4

3 回答 3

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');

我不明白你对你在这里想要达到的目标的解释。

C。

于 2010-07-27T09:04:35.810 回答
1

并不真地。Xdebug能够记录函数调用:http: //xdebug.org/docs/execution_trace

于 2010-07-27T08:42:49.323 回答
0

也许你想要像观察者模式这样的东西? http://en.wikipedia.org/wiki/Observer_pattern

于 2010-07-27T08:44:19.353 回答