php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #30889 Conflict between __get/__set and ++ operator
Submitted: 2004-11-25 00:39 UTC Modified: 2005-04-26 15:24 UTC
Votes:2
Avg. Score:5.0 ± 0.0
Reproduced:0 of 0 (0.0%)
From: m dot gehin at adan dot asso dot fr Assigned: andi (profile)
Status: Closed Package: Scripting Engine problem
PHP Version: 5CVS-2005-03-08 OS: winxp
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: m dot gehin at adan dot asso dot fr
New email:
PHP Version: OS:

 

 [2004-11-25 00:39 UTC] m dot gehin at adan dot asso dot fr
Description:
------------
When using the ++ operator on a property that is overloaded, the value inside the class is incremented *BEFORE* the call to the __set() method.

Reproduce code:
---------------
class overloaded
{
  private $values;
  function __construct()
  {
    $this->values = array('a' => 0);
  }
  function __set($name, $value)
  {
    print "<br>set $name = $value ($name was ".$this->values[$name].")";
    $this->values[$name] = $value;
  }
  function __get($name)
  {
    print "<br>get $name (returns ".$this->values[$name].")";
    return $this->values[$name];
  }
}
$test = new overloaded();
$test->a++;     // __get(), then __set()

Expected result:
----------------
get a (returns 0)
set a = 1 (a was 0)

Actual result:
--------------
get a (returns 0)
set a = 1 (a was 1)

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2005-03-06 18:28 UTC] sniper@php.net
Please try using this CVS snapshot:

  http://snaps.php.net/php5-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5-win32-latest.zip


 [2005-03-09 19:02 UTC] m dot gehin at adan dot asso dot fr
Unfortunately this snapshot doesn't solve the problem

Snapshot version :
Sun, 06 Mar 2005 20:50:26 +0100
Version: 5.1.0-dev
Branch: HEAD
Build: Release_TS
 [2005-04-05 21:54 UTC] tony2001@php.net
Andi, is it supposed to work so or not?
I.e. is it a docu problem or a bug?
 [2005-04-26 15:24 UTC] dmitry@php.net
Fixed in CVS HEAD and PHP_5_0
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Tue Dec 03 17:01:29 2024 UTC