今天有一个奇怪的错误(bug我).有三个继承层面涉及:
爷爷:
abstract class Zend_Db_Table_Row_Abstract implements ArrayAccess,
IteratorAggregate
{
protected $_data = array();
/* snip */
}
妈妈:
namespace Survey\Db\Table\Row;
class AbstractRow extends \Zend_Db_Table_Row_Abstract
{
/* snip */
}
儿童:
namespace Survey\Db\Table\Row;
class SurveyItem extends AbstractRow implements ISkippable
{
/* snip */
}
例外:
Type: ErrorException
Value: Undefined property: Survey\Db\Table\Row\SurveyItem::$_data
Location: [...]/Zend/Db/Table/Row/Abstract.php in handleError , line 177
第177行似乎不相关,但我添加它只是为了相信我;)
if (!array_key_exists($columnName, $this->_data)) {
PHP 5.4.11, problem did NOT exist with PHP 5.4.8
但事实证明,更新到PHP 5.4.12后仍然存在问题.在PHP中有一个类似错误的可能性似乎相当高.
题:
我获得了在爷爷中定义的保护字段在孩子中未定义的信息.什么情况可以导致这样的结果?