Получить аргументы вызывающей функции - PullRequest
0 голосов
/ 13 октября 2018

Как я могу получить аргументы вызывающей функции текущей функции?

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

Тема, которую вы упомянули в своем ответе 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');
0 голосов
/ 13 октября 2018

Используйте функцию debug_backtrace.

Создает обратную трассировку PHP, возвращающую массив ассоциативных массивов.Один из ключей в этих ассоциативных массивах - 'args'.При вызове внутри функции этот ключ в основном содержит список аргументов функций (в виде массива).Если это используется внутри включенного файла, в нем перечислены имена включенных файлов.

Например, (из PHP документы ):

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"
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...