如何获取当前函数的调用者函数的参数?
答案 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');