我正在追溯一个变量,我可以打印出该变量的值,但我不知道该值已传递给变量(哪个页面)。有没有什么好的方法可以打印出这个值实际来自哪里?有什么好方法可以查看变量来自哪里?
回答
回顾一下调试和一些问题。
没有编程的方式来确定变量“产生”到PHP中存在的位置。
好的调试技巧是你的朋友。请检查已发布的其他答案。这里重述:
debug_print_backtrace()
- 让你知道包含哪些文件。- 使用
grep -rn 'variable_name' .
从您的网站的顶级,看看它的存在。 - 在一堆地方添加
var_dump($variable)
一次可以帮助追踪变量在不同状态下的变化。
另外:
使用一个好的调试器可以帮助很多。一个广泛使用的调试器扩展是Xdebug。寻找
两个潜在的陷阱是:eval()
和extract()
这两种能“神奇”的原因变量的存在,这并没有之前。
当然,解决这个问题的最好方法是不要有全局变量。或者至少有尽可能少的。您可以有一个定义良好的流程到您的代码,无论是MVC或其他。然后你就会知道你的代码执行的顺序以及变量被实例化和/或传递的地方。
一个好的起点是debug_print_backtrace()
函数。它不会跟踪变量本身已经传递的位置,但它会向您显示所有功能和包含/需要的文件的行号。
为什么不检查正在回溯的页面中的$ _POST/$ _ GET变量。你确定你是否无法使用grep/search工具找到变量?
我用grep来搜索并找到$变量的原始文件,但我不确定它是否是正确的位置。另一件事是$变量已通过几页传递,我想知道所有的页面。 – user843812
您可能会添加一个打印语句以在每个页面上打印该变量的值。如果你想这样做,使用程序然后[链接] http://stackoverflow.com/questions/1538094/how-to-append-text-to-multiple-files应该帮助你。另一种方法是添加一段代码以将变量值附加到带有页面名称的文件。您可以在浏览页面后查看此文件,以查看每个页面上的变量值 – questborn
如果你在Linux的时候,你可以键入:
grep -rn "variable_name" .
,查看该变量引用的文件(这些文件的行号)。
我总是喜欢测试我的假设。所以,如果您怀疑变量页面上可能被改变,你可以输入:
var_dump($variable_name);
要看到价值。通过移动它,您可以将其置入并找到所设置变量的来源。
我希望可以帮到...
- 1. 有什么方法可以告诉ZeroMQ消息来自哪里?
- 2. 有什么方法可以查看自己的svn权限
- 3. 有什么方法可以查看来自环的原始标题?
- 4. 有什么方法可以用变量来表示glVertex3f吗?
- 5. 我在哪里可以查看WebSphere环境变量?
- 6. 来自哪里的方法?
- 7. 有一种方法可以知道和检查“谁来自”一个NET/HTTP请求“谁来自”/“来自哪里”?
- 8. 有没有什么方法可以在html中查看文件?
- 9. 来自非变量变量的值来自哪里?
- 10. 有没有什么方法可以确定ExternalInterface.call来自哪个电影?
- 11. 有什么方法可以查看网站允许哪些网址参数?
- 12. 有什么方法可以获取网页查看源内容?
- 13. 有什么方法可以在iPhone上查看文件?
- 14. “参数”变量来自“this.callParent(arguments)”哪里?
- 15. 这个变量来自哪里? Python
- 16. 事件变量来自哪里?
- 17. 如何辨别变量来自哪里?
- 18. 这个$资源变量来自哪里?
- 19. 这个网格变量来自哪里?
- 20. 哪个是最好的方法来存储可变数量的变量?
- 21. 有什么方法可以确定给定的GraphDataItem来自哪个系列?
- 22. 有什么方法可以检测哪些硬件输入来自web编程?
- 23. Rollup Accounts - 查看浏览量来自哪里?
- 24. 在哪里可以看到来自RAISE_APPLICATION_ERROR的错误消息?
- 25. 在哪里可以看到来自PlayN.Log的输出
- 26. 哪里可以放置NodeJS的JS文件来查看它们
- 27. 我可以在哪里查看TensorFlow渐变下降主循环?
- 28. JMeter - 错误来自哪里,为什么?
- 29. 什么是C#5,它来自哪里?
- 30. 什么是JavaScript来检查变量类型的最好办法
是否有任何函数可以像function_name($ variable)一样用于查看变量来自哪里。我试过debug_print_backtrace(),它只是打印出哪些页面已被包含,但页面太多,我无法检查所有页面。 – user843812