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

From: Date: Sun, 06 Mar 2005 17:28:48 +0000
Subject: #30889 [Opn->Fbk]: Conflict between __get/__set and ++ operator
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-77039@lists.php.net to get a copy of this message
ID: 30889 Updated by: sniper@php.net Reported By: m dot gehin at adan dot asso dot fr -Status: Open +Status: Feedback Bug Type: Class/Object related Operating System: winxp PHP Version: 5.0.2 New Comment: 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 Previous Comments: ------------------------------------------------------------------------ [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 (#77039) next »