ID:               49348
 Updated by:       sjo...@php.net
 Reported By:      BelStudent at yandex dot ru
 Status:           Assigned
 Bug Type:         Scripting Engine problem
 Operating System: *
 PHP Version:      5.*, 6
 Assigned To:      stas
 New Comment:

I was talking about this:
http://svn.php.net/viewvc/php/php-src/trunk/Zend/zend_execute.c?revision=286362&view=markup#l251

With ++$foo, type is BP_VAR_RW, which makes sense and gives a notice.
With ++$this->foo, it is BP_VAR_W.


Previous Comments:
------------------------------------------------------------------------

[2009-08-31 22:12:10] j...@php.net

# svn log -r100312 zend_object_handlers.c
------------------------------------------------------------------------
r100312 | stas | 2002-10-20 22:22:04 +0300 (Sun, 20 Oct 2002) | 2
lines

looks like this message should go

---

Stas, care to explain? Uncommenting that will bring back the notice.

And Sjoerd, what did you mean with that comment..?

------------------------------------------------------------------------

[2009-08-27 21:06:36] sjo...@php.net

In _get_zval_cv_lookup(), type is BP_VAR_W, while it should be
BP_VAR_RW for the example code.

------------------------------------------------------------------------

[2009-08-25 08:18:09] j...@php.net

Reopened, Gwynne's arguments are rock solid. :)

------------------------------------------------------------------------

[2009-08-25 07:13:46] gwy...@php.net

Actually, this is a valid problem; the problem described by bug #21008
is a different issue. There seems to be some confusion as to whether it
should be fixed or not, but it's neither a duplicate nor bogus.

Specifically, bug #21008 describes an issue with setting a variable to
a value, where this report describes an issue with updating a variable.
These are two distinct operations, and are handled differently.

More to the point, the following code throws a notice:
<?php
++$n;
?>

That the code described by this bug doesn't is an inconsistency.

------------------------------------------------------------------------

[2009-08-24 16:21:58] BelStudent at yandex dot ru

Description:
------------
Usually, if you try to do this: ++$num, then thrown notice, that the
"Undefined variable: num". This helps avoid errors. 
But if you have class and you're trying to do so ++$this->num num
nowhere and had not previously identified, then the issue no warnings
and notices. 

Accidentally deleted in the symbol and received ++$this->nu, and then
climbed into hell knows what mistakes to find this place and correct to
++$this->num took several hours. So I am very concerned about the issue:
how to do so were given notice, if you try to do something with
uninitialized (unknown) variable in the class?

Reproduce code:
---------------
<?php
class A
{ public function __construct()
    {   ++$this->num;
    }
}
new A();
?>

Expected result:
----------------
Undefined property:  A::$num


Actual result:
--------------
empty


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=49348&edit=1

Reply via email to