如何检查通过重写__set设置的类属性

时间:2012-03-05 08:51:12

标签: php netbeans yii xdebug

具体来说,我正在使用Yii框架,它通过覆盖__set方法填充其模型。

但是,当我使用xdebug检查模型类的实例时,我看不到这些属性。

我该如何检查它们?

4 个答案:

答案 0 :(得分:1)

我也在Yii forum上问了这个问题。

Luke的一个有用的建议是设置变量监视。

答案 1 :(得分:0)

Yii的神奇__get / __set覆盖是组件属性的一站式商店,可以使用不透明的getter / setter方法实现(在这种情况下可能没有任何内容)检查)或通过行为。附加到组件的行为存储在CComponent::$_m私有变量中,因此在这种情况下,您将不得不像Yii那样:钻取$_m并检查哪种行为(如果有)实现了属性。 / p>

答案 2 :(得分:0)

如果Yii使用getter和setter,则意味着属性是私有的或受保护的。如果所有xdebug都是print_r的花哨版本,我认为它也不会看到(认为我对保护属性的错误)。如果Yii属性是私有的,xdebug甚至不知道属性名称,因此它无法按名称检索属性(这将触发getter方法)。

一个简单的测试是将整个对象的print_r或vardump做到屏幕上(使用<pre>关于它,如果你想让它清晰可见)并看看哪些属性是可见的,哪些属于'吨。如果您看到xedebug显示的相同内容,那是因为xedebug无法使用它用于获取对象属性的任何方式来访问它们。

如果你能看到所有的属性,我可能仍然在正确的轨道上,但我无法猜出实际的原因。

答案 3 :(得分:0)

对于CActiveRecord,它们在属性成员中设置。检查您感兴趣的类的父类的实现。