代码之家  ›  专栏  ›  技术社区  ›  RobertPitt

跟踪函数实例

  •  1
  • RobertPitt  · 技术社区  · 15 年前

    那么在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 回复  |  直到 11 年前
        1
  •  2
  •   symcbean    15 年前

    仅使用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。

        2
  •  1
  •   Daniel Egeberg    15 年前
        3
  •  0
  •   Mchl    15 年前

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

    推荐文章