Edit report at http://bugs.php.net/bug.php?id=52428&edit=1
ID: 52428 User updated by: tyra3l at gmail dot com Reported by: tyra3l at gmail dot com Summary: $this isn't immutable Status: Bogus Type: Bug Package: Scripting Engine problem Operating System: all PHP Version: 5.3.3 New Comment: Thanks for the clarification. Did I something wrong in the report, or you just copypasted the "Thank you for taking the time to write to us..." part of your comment? Maybe it would be a good thing to add this conclusion to the documentation (reassigning this isn't allowed, because ..., if you try it, it will give you an error "Cannot re-assign this..." [if you really need this, you can do...]) Tyrael Previous Comments: ------------------------------------------------------------------------ [2010-07-25 18:39:17] johan...@php.net Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php We prevent from mistakes, we don't prevent people from hurting them purposely. If you want you can shoot yourself in your head. ------------------------------------------------------------------------ [2010-07-24 11:36:17] tyra3l at gmail dot com Description: ------------ As some closed bug-reports and the "PHP Fatal error: Cannot re-assign $this" states, the $this should be read-only/inmutable in PHP5. but with some tricks(variable variables mostly), you can walk-around this constraint. See the Test script. I don't know the importance of this restriction, and with reflection you can shoot you in the leg anyway, so maybe this can be left as is. Test script: --------------- <?php error_reporting(E_ALL); $var = new StdClass(); $var->foo = 'bar'; //$this = $var; // PHP Fatal error: Cannot re-assign $this $GLOBALS['this'] = $var; var_dump($this); $var->foo = 'baz'; $foo = 'this'; $$foo = $var; var_dump($this); foo($this); function foo($this){ //global $this; // PHP Fatal error: Cannot re-assign $this // $this = $GLOBALS['var']; // PHP Fatal error: Cannot re-assign $this var_dump($this); $GLOBALS['this']->foo = 'baw'; $$GLOBALS['foo'] = $GLOBALS['this']; var_dump($this); } Expected result: ---------------- PHP Fatal error: Cannot re-assign $this for every attempt to overwrite $this Actual result: -------------- you can set $this in the global scope through $GLOBALS, with argument in functions, and with variable variables in everywhere. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=52428&edit=1