2010-08-13 81 views
8

UPDATE - 致力於讓WAMP與phpDeveloper/Xdebug一起工作。我仍然想要NetBeans - 我只是想比較一下,看看我是否有一些見解。NetBeans-Xdebug可以工作,但不會暴露一些PHP變量


我使用的NetBeans 6.9LAMPXdebug的對PHP代碼工作。變量顯示效果很好,但最近效果不佳。例如下面,$authorized應該在代碼下面的變量窗格中可見,並應該公開其值。但它沒有顯示出來,也沒有它的價值,而對代碼進行懸浮並沒有幫助。 ($this對象正在顯示,並且它確實一直亮着,但$authorized不在此處,並且如果它是沒有意義的話)。

此行爲是一致的。也許這是代碼複雜性的功能?還是猖獗的對象使用?它似乎已經開始了,當我拿起CodeIgniter。

當然,當我最需要變量的時候,這些變量是隱藏的...對於那些可憐的人來說似乎是這樣。我錯過了什麼?

NetBeans debugger http://themanthursday.com/wiki/Debugger_Display.png

有下面一個更好的例子。當我單步執行此代碼時,變量僅顯示Superglobals$ this,如圖所示。我看不到任何值,甚至只是字符串。

(嘮叨的想法:我敢打賭,$ CI超級有事情做這一切...)

class Product_documents { 
    function getProductImage_all($id) 
//Return an array of all documents for this product 
{ 
    $imgPath = $this->_getProductImage_folder($id); 
    $arrayPossibleFilenames = $this->_getProductImage_possible_files($id); 
    foreach ($arrayPossibleFilenames as $imgFile) { 
    $imgPathFull = $imgPath.$imgFile; 

    $file_exists = get_file_info($imgPathFull); 
    if ($file_exists) 
    { 
    $arrayFilesPresent[] = $imgPathFull; 
    } 
    } 
    return $arrayFilesPresent;   
} 
} 

回答

8

右鍵單擊變量窗格。選擇「過濾器」。你會發現這個祕密。

+0

謝謝卡邁勒。具有諷刺意味的是,我今天刪除了NetBeans,回到了phpDesigner Pro ......並且在前一段時間放棄了CodeIgniter。不過,我會繼續關注這篇文章。順便說一下,我的結論是CI使用單例模式是關鍵;我想知道你提供的「祕密」是否會證實這一點。 – Smandoli 2011-06-08 22:21:35

+0

謝謝!我認爲這是另一個xdebug問題,這將爲我節省很多時間 – Benoit 2012-02-08 09:34:14

+0

難道你不能告訴這個「祕密」是什麼組成嗎?我想知道,無需在我的iPad上安裝NetBeans。 – conny 2014-12-02 09:53:05

-1

嘗試初始化$授權BOOL FALSE。

我見過Netbeans沒有向我展示變量,它是用沒有文檔類型的函數的返回值進行初始化的,但它被擊中或錯過的時間足以不能構造出一個模式。

+0

我在斷點上方添加了這個:$ authorized = FALSE; 沒有變化。這是你的意思嗎?另外,在發佈後,我意識到我可以產生一個更有趣的未曝光變量的例子......我可能稍後再研究它。 – Smandoli 2010-08-14 00:58:30

+0

-1因爲這個建議沒有用,所以賞金應該去其他地方。不過謝謝Fanis的建議。 – Smandoli 2010-08-18 14:46:22

+0

不用擔心。就像我說的那樣,它對我來說很重要。我注意到的其他事情是,如果正在調試的腳本沒有功能,它偶爾會無法在全局範圍內選擇變量。 – Fanis 2010-09-02 09:34:35

2

我以前在Netbeans中看過類似的東西。我認爲這只是一個涉及Netbean與XDebug交互的bug。我之前見過的一種可能的解決方法是爲您看不到的變量添加一個「Watch」。例如,您可以轉到「手錶」選項卡並輸入$authorized。一旦它被設置,它應該顯示出來。

+0

謝謝,好主意。使用手錶沒有出現在我身上,只是因爲在VBA中他們似乎特別無效。我必須「在盒子外面思考」 - 或者說得更加正確,我必須在另一個盒子裏思考。 – Smandoli 2010-08-18 14:44:58

+0

是的,不幸的是,這個特殊的盒子可能並不總是最好的考慮環境:P – 2010-08-18 15:01:42

+0

對不起,我一直很忙,沒有嘗試過 - 但我希望今晚能嘗試它。至於WAMP實驗,我仍然需要完成一個有效的xDebug。 (有時我只是希望我能夠實時完成工作,呵呵) – Smandoli 2010-08-20 14:48:19

6

過這個網站,有一個非常好的鏈接到該走一個通過編譯「更多最新的」版本升級的Xdebug的過程中Xdebug的頁面傳來:

http://icephoenix.us/php/xdebug-doesnt-show-local-variables-in-komodo-netbeans-or-eclipse-pdt/

變量裏面的對象/班級再次出現!是啊!

沒有手錶,沒有'這可能會使Xdebug嚇壞'消息 - 只是好的變量,現在完全暴露了我的解決方案的失敗......(哈哈)。

大衛

+0

Xdebug 2.1.0RC像魅力一樣工作 – r15habh 2011-09-07 06:20:41

0

我認爲它歸結爲在CodeIgniter中實現爲「超級對象」的單例模式。我從來沒有重新啓動這個項目來測試Kamal的想法。在他發佈後不久,我得出的結論是單身人士是原因(我沒有試圖猜測卡邁勒是否有解決方案)。因此我對this post的迴應。

0

(2015)在[xdebug]下的php.ini中,如果希望所有本地變量處於調試模式,請設置xdebug.show_local_vars = 1。

+0

它不會做你的想法。從https://xdebug.org/docs/all_settings :: 當這個設置被設置爲某些東西時!= 0 Xdebug在錯誤情況下生成的堆棧轉儲也會顯示最頂級作用域中的所有變量。請注意,這可能會產生大量信息,因此默認情況下會關閉。 – Dakusan 2017-02-19 20:42:17