Нет способа получить переменные вызывающих, но вы можете получить их аргументы. Это легко сделать с помощью debug_backtrace()
:
<?php
class DebugTest
{
public static function testFunc($arg1, $arg2) {
return self::getTrace();
}
private static function getTrace() {
$trace = debug_backtrace();
return sprintf(
"This trace function was called by %s (%s:%d) with %d %s: %s\n",
$trace[1]["function"],
$trace[1]["file"],
$trace[1]["line"],
count($trace[1]["args"]),
count($trace[1]["args"]) === 1 ? "argument" : "arguments",
implode(", ", $trace[1]["args"])
);
}
}
echo DebugTest::testFunc("foo", "bar");
Запустив эту программу, мы получим следующий вывод:
This trace function was called by testFunc (/Users/mike/debug.php:23) with 2 arguments: foo, bar
debug_backtrace()
возвращает массив; элемент 0 - это функция, в которой была вызвана сама функция, поэтому мы используем элемент 1 в примере. Вы можете использовать петлю, чтобы пройти весь путь назад по трассе.