#40248 [Opn]: Undefined members with combined operators produce no warning
ID: 40248
Updated by: vrana@php.net
Reported By: jontsa at amigaone dot cc
Status: Open
-Bug Type: Documentation problem
+Bug Type: Class/Object related
Operating System: Solaris
PHP Version: 5.2.0
New Comment:
I gave two reasons why this is a bug:
1. Consistency
1a. $b->a += 5 should be semantic equivalent to $b->a = $b->a + 5.
Later produces notice, former not.
1b. Both $a += 5 and $a = $a + 5 produces notice (same for arrays).
Object properties miss one notice.
2. Error-prone
The notice is here to inform the programmer about working with
undefined variable/property/index. Adding a value to a property is
clearly a usage of the property.
Jani gave one reason (operator precedence) which is erroneous because
$b->a alone issues the notice too.
Discussed on internals: http://news.php.net/php.internals/31732
Before bogusing this report again please provide some real arguments on
internals@.
Previous Comments:
------------------------------------------------------------------------
[2007-08-19 20:12:24] jani@php.net
*sigh*
If you don't want to document it, let someone else document it. This is
_NOT_ any bug.
------------------------------------------------------------------------
[2007-08-18 08:26:19] vrana@php.net
<?php
$c = $c + 5; // Notice
$a += 5; // Notice
$b = new stdClass;
$b->a; // Notice
$b->c = $b->c + 5; // Notice
$b->a += 5;
?>
It really is not a rocket science. This behavior is inconsistent and
errors-hiding. The explanation through operator precedence doesn't work
as $b->a alone issues the notice too.
If you don't want to fix it then leave it to others.
------------------------------------------------------------------------
[2007-08-17 23:34:16] jani@php.net
Operator precedence. $b->a happens before += and thus the property does
exist before assignment. Not really rocket science. Now go document it.
------------------------------------------------------------------------
[2007-08-17 16:05:48] vrana@php.net
If this incostitent and possibly-errors-hiding behavior should be
documented as a feature it should be explained why PHP behaves this
way.
Please write down the reasons why this is the correct behavior. I
provided two reasons why this is more bug than a feature.
------------------------------------------------------------------------
[2007-08-17 13:37:23] jani@php.net
Because it is.
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/40248
--
Edit this bug report at http://bugs.php.net/?id=40248&edit=1
Thread (7 messages)