我正在追溯一個變量,我可以打印出該變量的值,但我不知道該值已傳遞給變量(哪個頁面)。有沒有什麼好的方法可以打印出這個值實際來自哪裏?有什麼好方法可以查看變量來自哪裏?
回答
回顧一下調試和一些問題。
沒有編程的方式來確定變量「產生」到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