Bug #68118 [NEW]: $a->foo .= 'test'; can leave $a->foo undefined

From: Date: Mon, 29 Sep 2014 15:30:23 +0000
Subject: Bug #68118 [NEW]: $a->foo .= 'test'; can leave $a->foo undefined
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-187753@lists.php.net to get a copy of this message
From: rasmus Operating system: Any PHP version: 5.5.17 Package: Class/Object related Bug Type: Bug Bug description:$a->foo .= 'test'; can leave $a->foo undefined Description: ------------ PHP 5.5 introduced a new undefined property notice for this case: $a->undefined .= 'test'; This means that if a custom error handler is in place it will be triggered, of course. There is a weird side-effect that can happen if the error handler hits the same error causing the property name to be overwritten. eg. http://3v4l.org/KGXhF Compare to: http://3v4l.org/VPmLK PHP 5.6 and PHP 7 are affected as well. Test script: --------------- <?php class test { public function __construct() { $this->test = 'meow'; } } function error_handler() { $test = new test(); return true; } set_error_handler("error_handler"); // test one class a {} $a = new a; $a->undefined .= 'test'; echo isset($a->undefined) ? 'true' : 'false'; echo "\n"; // test two $b .= 'test'; echo isset($b) ? 'true' : 'false'; echo "\n"; Expected result: ---------------- true true Actual result: -------------- false true -- Edit bug report at https://bugs.php.net/bug.php?id=68118&edit=1 -- Try a snapshot (PHP 5.4): https://bugs.php.net/fix.php?id=68118&r=trysnapshot54 Try a snapshot (PHP 5.5): https://bugs.php.net/fix.php?id=68118&r=trysnapshot55 Try a snapshot (trunk): https://bugs.php.net/fix.php?id=68118&r=trysnapshottrunk Fixed in SVN: https://bugs.php.net/fix.php?id=68118&r=fixed Fixed in release: https://bugs.php.net/fix.php?id=68118&r=alreadyfixed Need backtrace: https://bugs.php.net/fix.php?id=68118&r=needtrace Need Reproduce Script: https://bugs.php.net/fix.php?id=68118&r=needscript Try newer version: https://bugs.php.net/fix.php?id=68118&r=oldversion Not developer issue: https://bugs.php.net/fix.php?id=68118&r=support Expected behavior: https://bugs.php.net/fix.php?id=68118&r=notwrong Not enough info: https://bugs.php.net/fix.php?id=68118&r=notenoughinfo Submitted twice: https://bugs.php.net/fix.php?id=68118&r=submittedtwice register_globals: https://bugs.php.net/fix.php?id=68118&r=globals PHP 4 support discontinued: https://bugs.php.net/fix.php?id=68118&r=php4 Daylight Savings: https://bugs.php.net/fix.php?id=68118&r=dst IIS Stability: https://bugs.php.net/fix.php?id=68118&r=isapi Install GNU Sed: https://bugs.php.net/fix.php?id=68118&r=gnused Floating point limitations: https://bugs.php.net/fix.php?id=68118&r=float No Zend Extensions: https://bugs.php.net/fix.php?id=68118&r=nozend MySQL Configuration Error: https://bugs.php.net/fix.php?id=68118&r=mysqlcfg

« previous php.bugs (#187753) next »