ID: 33061 Updated by: [EMAIL PROTECTED] Reported By: online at natweiss dot com -Status: Assigned +Status: Bogus Bug Type: Class/Object related Operating System: * PHP Version: 5CVS-2005-06-19 Assigned To: dmitry New Comment:
PHP5 always pass and assign objects by reference. You should set "zend.ze1_compatibility_mode=1" if you like PHP4 behavior. Previous Comments: ------------------------------------------------------------------------ [2005-06-19 02:12:55] [EMAIL PROTECTED] ATTENTION: This does NOT happen with PHP_4_4 !! Simplified example: <?php class something { public $val = 0; } function pass_by_value($value) { $value->val = 1; } $object = new something; var_dump($object); pass_by_value($object); var_dump($object); ?> Expected result: ---------------- int(0) int(0) Actual result: -------------- int(0) int(1) ------------------------------------------------------------------------ [2005-05-19 02:39:30] online at natweiss dot com Description: ------------ See reproduce code. php.ini is stock / no changes. Reproduce code: --------------- <?php // a class that does nothing class something{ function nothing(){ } } // a pass-by-value function that modifies a member's member function pass_by_value($value){ $value->member->val = 1; } // create a something with a member something $object = new something; $object->member = new something; // call nothing, then call pass_by_value and print results $object->member->nothing(); echo "member->val should be empty!\n"; pass_by_value($object); print_r($object); ?> Expected result: ---------------- $object->member should be empty Actual result: -------------- $object->member->val == 1 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=33061&edit=1