我对xdebugger有一个奇怪的问题。可以考虑一个合乎逻辑的解释吗?oO?
我有一个班级:
abstract class AbstractEntity
{
public $last_modified;
public $massEntry = array();
public function __construct(array $properties = null)
{
if (!empty($properties)) {
$this->assignProperties($properties);
}
}
public function __set($property, $value = null)
{
if (property_exists($this, $property)) {
$this->$property = $value;
return $this;
}
throw new InvalidPropertyException("Property $property not found.");
}
public function __get($property)
{
if (property_exists($this, $property)) {
return $this->$property;
}
throw new InvalidPropertyException("Property $property not found.");
}
public function assignProperties(array $properties)
{
$availableProps = array_keys(get_object_vars($this));
foreach ($availableProps as $property) {
if (isset($properties[$property])) {
$this->$property = $properties[$property];
}
}
}
public function toArray()
{
return (array) $this;
}.....
这是DB对象的基础。当我使用一个对象通过db适配器填充它时,如:
$entity = new EntityExtendingTheClass($arrayOfData);
现在这里有一个幽灵般的部分,当我正常运行脚本时,我没有任何错误。但是当我用断点运行时,我遇到了这个奇怪的问题:
Property composites not found
奇怪的是。我不喜欢整个项目这个属性。所以没有办法从代码中获取它。
最令人头疼的事情就是当我解决错误时,我接到了一个叫做不存在的财产的电话。我的coude dous没有。
任何sugestions?
更新:
试图让它通过断点(断开时)停止并且没有断点。
最大的问题是,只有当我尝试在创建对象时使用调试器时才会发生这种情况。如果我滑雪它不会破坏...... WTH?
答案 0 :(得分:1)
Xdebug在调试时分配属性。你可以添加一些东西来检查复合属性吗?
public function __get($property)
{
if (property_exists($this, $property) || $property == 'composites') {
return $this->$property;
}
throw new InvalidPropertyException("Property $property not found.");
}
将其作为建议扔出去可能有用吗? :)也许您还可以查看xdebug是否已安装,并且只检查该情况下的复合材料?
HTH