ID:               31683
 Updated by:       [EMAIL PROTECTED]
 Reported By:      wagner at bonn dot edu
-Status:           Open
+Status:           Assigned
 Bug Type:         Zend Engine 2 problem
 Operating System: Gentoo Linux
 PHP Version:      5CVS-2005-01-25 (dev)
-Assigned To:      
+Assigned To:      dmitry


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

[2005-01-25 01:50:28] wagner at bonn dot edu

Description:
------------
Changing $name in __get($name) to e.g. "foo", will cause   
the next call of __get() to use "foo" as the name instead   
of the name of the member-Variable that was actually 
called. 
Only intercepted accesses to variables (e.g. 
$obj->doesnt_exist) seem to be affected, not direct calls 
to __get() (e.g. $obj->__get("whatever") ); 
  
Reproducible with PHP 5.0.3, PHP_5_0 CVS and CVS head (PHP  
5.1 dev).  

Reproduce code:
---------------
<?php 
class testclass { 
  public function __get($name) { 
    echo "$name \n"; 
    $name = "wrong";
  } 
} 

$obj = new testclass(); 

for ($i=1; $i <=3; $i++) { 
  $dummy = $obj->correct; 
}
?> 


Expected result:
----------------
correct   
correct  
correct  
 
The line 
$name = "wrong"; 
should have no effect. 

Actual result:
--------------
correct  
wrong  
wrong  
 


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


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

Reply via email to