1

OK、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 に答える