2011-11-10 81 views

回答

1

回顧一下調試和一些問題。

沒有編程的方式來確定變量「產生」到PHP中存在的位置。

好的調試技巧是你的朋友。請檢查已發佈的其他答案。這裏重述:

  1. debug_print_backtrace() - 讓你知道包含哪些文件。
  2. 使用grep -rn 'variable_name' .從您的網站的頂級,看看它的存在。
  3. 在一堆地方添加var_dump($variable)一次可以幫助追蹤變量在不同狀態下的變化。

另外:
使用一個好的調試器可以幫助很多。一個廣泛使用的調試器擴展是Xdebug。尋找

兩個潛在的陷阱是:eval()extract()
這兩種能「神奇」的原因變量的存在,這並沒有之前。

當然,解決這個問題的最好方法是不要有全局變量。或者至少有儘可能少的。您可以有一個定義良好的流程到您的代碼,無論是MVC或其他。然後你就會知道你的代碼執行的順序以及變量被實例化和/或傳遞的地方。

5

一個好的起點是debug_print_backtrace()函數。它不會跟蹤變量本身已經傳遞的位置,但它會向您顯示所有功能和包含/需要的文件的行號。

+0

是否有任何函數可以像function_name($ variable)一樣用於查看變量來自哪裏。我試過debug_print_backtrace(),它只是打印出哪些頁面已被包含,但頁面太多,我無法檢查所有頁面。 – user843812

2

爲什麼不檢查正在回溯的頁面中的$ _POST/$ _ GET變量。你確定你是否無法使用grep/search工具找到變量?

+0

我用grep來搜索並找到$變量的原始文件,但我不確定它是否是正確的位置。另一件事是$變量已通過幾頁傳遞,我想知道所有的頁面。 – user843812

+0

您可能會添加一個打印語句以在每個頁面上打印該變量的值。如果你想這樣做,使用程序然後[鏈接] http://stackoverflow.com/questions/1538094/how-to-append-text-to-multiple-files應該幫助你。另一種方法是添加一段代碼以將變量值附加到帶有頁面名稱的文件。您可以在瀏覽頁面後查看此文件,以查看每個頁面上的變量值 – questborn

1

如果你在Linux的時候,你可以鍵入:

grep -rn "variable_name" . 

,查看該變量引用的文件(這些文件的行號)。

我總是喜歡測試我的假設。所以,如果您懷疑變量頁面上可能被改變,你可以輸入:

var_dump($variable_name); 

要看到價值。通過移動它,您可以將其置入並找到所設置變量的來源。

我希望可以幫到...

相關問題