具体来说,我正在使用Yii框架,它通过覆盖__set方法填充其模型。
但是,当我使用xdebug检查模型类的实例时,我看不到这些属性。
我该如何检查它们?
答案 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,它们在属性成员中设置。检查您感兴趣的类的父类的实现。