我正在尝试调试此代码:
public function removeBlankLines() {
$this->qp->find('br');
} // <-- break point is here
当我深入查看$ this对象(使用phpStorm)时,我看不到我感兴趣的子数组。它只显示“无法获取属性”截图:
我正在“侦听调试连接”功能。我正在从命令行运行脚本。 PHP版本:
[bwood@mbp ~]$ php -v
PHP 5.4.24 (cli) (built: Jan 19 2014 21:32:15)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans
答案 0 :(得分:10)
http://bugs.xdebug.org/view.php?id=686
所有关于如何实施此类(SplObjectStorage
,ArrayObject
等)内部:
这是因为SplObjectStorage类的对象不是用户登陆PHP对象,而是特殊的超级内部PHP对象。许多其他内部PHP类也会发生类似的情况。
AFAIK在PhpStorm方面无法做任何事情,直到xdebug能够“支持”它们。
更新:前面提到的xdebug票证已经解决了 xdebug 2.3.3 很久以前(最新的稳定xdebug版本是2.4.1)应该可以在调试器中查看这些类。
答案 1 :(得分:6)
可以从http://xdebug.org/wizard.php
获取升级说明如果无法升级,您可以将内容转储为最后一个 采取。
在评估表达式中,您可以尝试类似
的内容file_put_contents(&#39; dump.txt&#39;,var_export($ requiredVariable,true));
答案 2 :(得分:1)
如果您尝试检查的属性是从父类继承而在当前范围内不可见,则还会出现 ! can not get property
错误。
xDebug将注释相关属性,如:
$childClass = {path\to\child\Child}
*path\to\class\Parent*property = {path\to\property\Property}
其中:
Parent
是基类Child
是扩展类property
是在Parent 请注意标识此案例的星号*
,并表示“在当前范围内不可见”。
启用调试的快速解决方案是将父级属性的可见性设置为public
。
即
class Parent {
public $property; // instead of private or protected
}
class Child extends Parent{
// You can now inspect parent::$property for instances of Child
}
请记住在完成测试后将属性可见性设置回正确的值。
答案 3 :(得分:0)
Linux LDME2
PHP的 5.6.30-0 + deb8u1 强>
xdebug v 2.5.3
我试过这个容器。
php -i | xclip -selection clipboard
接受并遵循说明
https://xdebug.org/wizard.php
我得到了这个结果(无法获得属性)
sha256sum~ / xdebug-from-src / xdebug-2.5.3 / modules / xdebug.so afbb70941387ff1e191433d2a09ff42a393caac773194c0e9004b844a0f3d73b
我找到了解决这个问题的方法。而是从源代码构建,需要从pecl安装
sudo pecl install xdebug
sha256sum /usr/lib/php5/20131226/xdebug.so b82f2a4ab101323d3600a79223143e2eefe941d404c88af2bd7434fd47caaf13
php -v
PHP 5.6.30-0 + deb8u1(cli)(建于2017年2月8日08:50:21)版权所有(c) 1997-2016 PHP Group Zend Engine v2.6.0,版权所有(c)1998-2016 Zend Technologies Zend Technologies的Zend OPcache v7.0.6-dev,Copyright(c)1999-2016 与Xdebug v2.5.3,版权所有(c)2002-2017,作者Derick Rethans
答案 4 :(得分:-1)
我在Yii框架中有类似的问题。 ActiveRecord对象在调试器监视中未显示属性(无法获取属性)。
但是有一个简单的解决方法,在调试器监视中,使用$this->attributes
代替$this
。
如果您知道内部对象的结构以及所要查找的内容,我认为这种方法可以在许多类似的情况下提供帮助。如果$this->something
仍然无法正常工作,请尝试使用(array)$this-> something
将其强制转换为数组。