#30889 [Fbk->Opn]: Conflict between __get/__set and ++ operator

From: Date: Wed, 09 Mar 2005 18:02:43 +0000
Subject: #30889 [Fbk->Opn]: Conflict between __get/__set and ++ operator
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-77364@lists.php.net to get a copy of this message
ID: 30889 User updated by: m dot gehin at adan dot asso dot fr Reported By: m dot gehin at adan dot asso dot fr -Status: Feedback +Status: Open Bug Type: Class/Object related Operating System: winxp PHP Version: 5.0.2 New Comment: 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 Previous Comments: ------------------------------------------------------------------------ [2005-03-06 18:28:46] 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 ------------------------------------------------------------------------ [2004-11-25 00:39:59] 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) ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=30889&edit=1

« previous php.bugs (#77364) next »