我正在尝试找到一种方法来获取字符串中(用户定义的)PHP 函数的源代码。
对于普通代码,这很容易,使用反射我可以找到定义函数的文件和行号;然后我可以打开文件并阅读函数源代码。
如果在 eval'd 代码中定义了函数,这将不起作用。我不想记录所有经过评估的代码。
这可能吗?如果是,那么如何?
示例代码:
function myfunction() {
echo "Test";
}
eval('
function myevalfunction() {
echo "Test";
}
');
$a = new ReflectionFunction('myfunction');
echo $a;
$b = new ReflectionFunction('myevalfunction');
echo $b;
输出:
Function [ <user> <visibility error> function myfunction ] {
@@ test.php 3 - 5
}
Function [ <user> <visibility error> function myevalfunction ] {
@@ test.php(11) : eval()'d code 2 - 4
}