NetBeans-Xdebug可以工作,但不会公开一些PHP变量

时间:2010-08-13 02:17:39

标签: php netbeans

更新 - 致力于让WAMP与phpDeveloper/Xdebug合作。我仍然想要NetBeans - 我只是想比较一下,看看我是否得到了一些见解。


我正在使用 NetBeans 6.9 LAMP Xdebug 来处理PHP代码。 Variables显示效果很好,但最近效果不佳。例如,下面的$authorized应该在代码下面的变量窗格中可见,并且应该公开它的值。但它没有显示,也没有显示它的价值,并且对代码的模仿并没有帮助。 ($this对象正在显示,并且它会继续显示,但$authorized不在那里,如果是,则没有意义。)

此行为是一致的。也许这是代码复杂性的一个功能?还是猖獗的对象使用?它似乎是在我拿起CodeIgniter时开始的。

当然,当我最需要它们时隐藏变量......或者对于穷人来说似乎是这样。我错过了什么?

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

下面有一个更好的例子。当我逐步完成此代码时,Variables只显示 Superglobals $ this ,就像在图片中一样。我看不到任何价值,甚至只是字符串。

(唠叨想:我敢打赌$ CI SuperObject与所有这些有关...)

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;        
}
}

6 个答案:

答案 0 :(得分:9)

右键单击变量窗格。选择“过滤器”。你会发现这个秘密。

答案 1 :(得分:6)

来到这个网站,它有一个非常好的链接到Xdebug页面,通过编译“更新的”版本来完成升级Xdebug的过程:

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

对象/类内部的变量再次出现!呀!

没有手表,没有'这可能让Xdebug吓坏了'消息 - 只是好的变量,现在完全暴露了我的解决方案的失败......(哈哈)。

大卫

答案 2 :(得分:2)

我之前在Netbeans中看过这样的东西。我希望这只是一个涉及Netbean与XDebug交互的错误。我之前看到的一种可能的解决方法是为您看不到的变量添加“监视”。对于您的示例,您可以转到“手表”标签并输入$authorized。它应该在设置后显示出来。

答案 3 :(得分:0)

我认为它归结为在CodeIgniter中实现为“超级对象”的单例模式。我从来没有重新启动过这个项目来测试Kamal的想法。在他发布后不久,我总结了单身是原因(我没有试图猜测Kamal是否有解决方案)。因此,我对this post的回复。

答案 4 :(得分:0)

(2015)在[xdebug]下的php.ini中,如果你想在调试模式中使用所有局部变量,请设置xdebug.show_local_vars = 1。

答案 5 :(得分:-1)

尝试将$ authorized初始化为bool false。

我已经看到Netbeans没有向我展示使用没有doctype的函数的返回值初始化的变量,但是它的命中或错过足以使模式无法生成。