在PHP中获取调用函数的参数

时间:2016-01-15 03:48:15

标签: php function arguments

我正在编写一个日志记录类,我想添加一个方便函数来记录调用它的函数的参数。有点复杂,所以这里有一些代码:

function MyFunc($arg1, $arg2) {
   global $oLog;

   $oLog->logArgs();
}

因此,我可以使用debug_backtrace()获取调用函数(MyFunc)的名称。我有兴趣获取参数的名称和值,最好不必在对logArgs()的调用中添加func_get_args()。

我知道这是一个很高的订单,但PHP继续让我感到惊讶,所以我把它放在那里,以防万一。

感谢。

1 个答案:

答案 0 :(得分:1)

你可以用反射来做到这一点:

function logger()
{
    $bt = debug_backtrace();

    $previous = $bt[1];

    if(empty($previous['class'])) {
        $fn = new ReflectionFunction($previous['function']);
    } else {
        $class = new ReflectionClass($previous['class']);
        $fn = $class->getMethod($previous['function']);
    }

    $parameters = $fn->getParameters();
    //Get a parameter name with $parameters[$paramNum]->getName()
    //Get the value from $previous['args'][$paramNum]
}

这个特定的实现不适用于闭包,但它适用于全局函数和类方法。