From: Operating system: linux PHP version: 5.4.0 Package: SPL related Bug Type: Bug Bug description:offsetGet not used for non existed items with second level of depth (and more)
Description: ------------ If you overload offsetGet method, and return array from it, on non existed keys/offset, test script must works without warnings. Maybe because offsetGet not used, or PHP interpreter parse it from right-to-left, something like this (pseudo code): 1. $t = foo->bar = 1 2. $a = $t; Test script: --------------- <? error_reporting(E_ALL); class OnEmptyArray extends ArrayObject { /** * Create ArrayObject on not existed offsets/keys */ public function offsetGet($offset) { if (!$this->offsetExists($offset)) { $this->{$offset} = new self(array(), $this->getFlags(), $this->getIteratorClass()); } return parent::offsetGet($offset); } } echo "Begin\n"; $a = new OnEmptyArray(); $a->foo->bar = 1; echo "End\n"; Expected result: ---------------- Begin End Actual result: -------------- Begin PHP Warning: Creating default object from empty value in - on line 20 End -- Edit bug report at https://bugs.php.net/bug.php?id=61826&edit=1 -- Try a snapshot (PHP 5.4): https://bugs.php.net/fix.php?id=61826&r=trysnapshot54 Try a snapshot (PHP 5.3): https://bugs.php.net/fix.php?id=61826&r=trysnapshot53 Try a snapshot (trunk): https://bugs.php.net/fix.php?id=61826&r=trysnapshottrunk Fixed in SVN: https://bugs.php.net/fix.php?id=61826&r=fixed Fixed in SVN and need be documented: https://bugs.php.net/fix.php?id=61826&r=needdocs Fixed in release: https://bugs.php.net/fix.php?id=61826&r=alreadyfixed Need backtrace: https://bugs.php.net/fix.php?id=61826&r=needtrace Need Reproduce Script: https://bugs.php.net/fix.php?id=61826&r=needscript Try newer version: https://bugs.php.net/fix.php?id=61826&r=oldversion Not developer issue: https://bugs.php.net/fix.php?id=61826&r=support Expected behavior: https://bugs.php.net/fix.php?id=61826&r=notwrong Not enough info: https://bugs.php.net/fix.php?id=61826&r=notenoughinfo Submitted twice: https://bugs.php.net/fix.php?id=61826&r=submittedtwice register_globals: https://bugs.php.net/fix.php?id=61826&r=globals PHP 4 support discontinued: https://bugs.php.net/fix.php?id=61826&r=php4 Daylight Savings: https://bugs.php.net/fix.php?id=61826&r=dst IIS Stability: https://bugs.php.net/fix.php?id=61826&r=isapi Install GNU Sed: https://bugs.php.net/fix.php?id=61826&r=gnused Floating point limitations: https://bugs.php.net/fix.php?id=61826&r=float No Zend Extensions: https://bugs.php.net/fix.php?id=61826&r=nozend MySQL Configuration Error: https://bugs.php.net/fix.php?id=61826&r=mysqlcfg