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
 [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

Add a Patch

Pull Requests

Add a Pull Request

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 Mar 19 03:01:29 2024 UTC