有没有什么好方法可以看出变量的来源?

时间:2011-11-10 05:38:39

标签: php

我正在追溯变量,我可以打印出该变量的值,但我不知道这个值传递给变量的位置(哪个页面)。有没有什么好方法可以打印出这个值来自何处?

4 个答案:

答案 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中存在变量“生成”的位置。

良好的调试技巧是你的朋友。查看发布的其他答案。回顾一下:

  1. debug_print_backtrace() - 告诉您包含的文件。
  2. 使用您网站顶层的grep -rn 'variable_name' .查看其存在位置。
  3. 在一堆地方添加var_dump($variable),一次一个也可以帮助追踪变量在不同状态下的情况。
  4. 此外:
    使用一个好的调试器可以帮助很多。一个广泛使用的调试器扩展是Xdebug。

    要寻找的两个潜在问题是:eval()extract()
    这两个都可以“神奇地”导致变量存在,而不是之前存在。

    当然,解决此问题的最佳方法是不要使用全局变量。或者至少尽可能少。您可以为代码定义明确的流程,无论是MVC还是其他内容。然后,您将了解代码的执行顺序以及变量实例化和/或传递的位置。