今日は奇妙なバグがあります (私を悩ませています)。関連する継承レベルは 3 つあります。
おじいちゃん:
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、PHP 5.4.8 では問題はありませんでした
バグ #63462 マジック メソッドが unset protected properties に対して 2 回呼び出されるの修正を見たとき、これで問題が解決すると思いました。
しかし、PHP 5.4.12 に更新した後も問題が解決しないことが判明しました。PHP に別の同様のバグがある可能性は非常に高いようです。
質問:
おじいちゃんで定義された保護されたフィールドが子で未定義であるという情報を取得します。そのような結果につながる可能性のあるシナリオは何ですか?