我正在追溯变量,我可以打印出该变量的值,但我不知道这个值传递给变量的位置(哪个页面)。有没有什么好方法可以打印出这个值来自何处?
答案 0 :(得分:5)
一个很好的起点是debug_print_backtrace()
功能。它不会跟踪变量本身传递的位置,但它会显示所有函数和包含/所需文件的行号。
答案 1 :(得分:2)
为什么不检查要回溯的页面中的$ _POST / $ _ GET变量。你确定你是否使用grep / search utility找不到变量?
答案 2 :(得分:1)
如果你在linux中,可以输入:
grep -rn "variable_name" .
查看引用该变量的文件(以及这些文件上的行号)。
我也总是喜欢测试我的假设。因此,如果您怀疑可能在页面上更改了变量,则可以键入:
var_dump( $variable_name );
要查看价值。通过移动它,您将能够对其进行归零并找到所设置变量的来源。
我希望有帮助...
答案 3 :(得分:1)
回顾调试和一些陷阱。
没有编程方法可以确定PHP中存在变量“生成”的位置。
良好的调试技巧是你的朋友。查看发布的其他答案。回顾一下:
debug_print_backtrace()
- 告诉您包含的文件。grep -rn 'variable_name' .
查看其存在位置。var_dump($variable)
,一次一个也可以帮助追踪变量在不同状态下的情况。此外:
使用一个好的调试器可以帮助很多。一个广泛使用的调试器扩展是Xdebug。
要寻找的两个潜在问题是:eval()
和extract()
这两个都可以“神奇地”导致变量存在,而不是之前存在。
当然,解决此问题的最佳方法是不要使用全局变量。或者至少尽可能少。您可以为代码定义明确的流程,无论是MVC还是其他内容。然后,您将了解代码的执行顺序以及变量实例化和/或传递的位置。