获取调用者函数参数

时间:2018-10-13 09:50:47

标签: php reflection

如何获取当前函数的调用者函数的参数?

2 个答案:

答案 0 :(得分:1)

使用debug_backtrace功能。

它生成一个PHP回溯,返回一个关联数组的数组。这些关联数组中的键之一是'args'。如果在函数内部调用,则此键基本上包含函数参数列表(作为数组)。如果在包含文件中使用此文件,则会列出包含的文件名。

例如(来自PHP docs):

function a_test($str)
{
    echo "\nHi: $str";
    var_dump(debug_backtrace());
}

a_test('friend');

它将输出以下内容:

array(2) {
[0]=>
array(4) {
    ["file"] => string(10) "/tmp/a.php"
    ["line"] => int(10)
    ["function"] => string(6) "a_test"
    ["args"]=>
    array(1) {
      [0] => &string(6) "friend"
    }
}
[1]=>
array(4) {
    ["file"] => string(10) "/tmp/b.php"
    ["line"] => int(2)
    ["args"] =>
    array(1) {
      [0] => string(10) "/tmp/a.php"
    }
    ["function"] => string(12) "include_once"
  }
}

答案 1 :(得分:1)

您在回答https://stackoverflow.com/a/9133897/3224296中提到的主题

function GetCallingMethodName(){
    $e = new Exception();
    $trace = $e->getTrace();
    //position 0 would be the line that called this function so we ignore it
    $last_call = $trace[1];
    print_r($last_call);
}

function firstCall($a, $b){
    theCall($a, $b);
}

function theCall($a, $b){
    GetCallingMethodName();
}

firstCall('lucia', 'php');