|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2010-01-20 15:48 UTC] kominbhai at gmail dot com
Description: ------------ $this can be assigned using variable casting Reproduce code: --------------- <?php $a="this"; $$a="abc"; echo $this; //works when it should not be ?> Expected result: ---------------- Error: $this cannot be re-assigned Actual result: -------------- echoes abc PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Nov 01 00:00:01 2025 UTC |
There are several other ways to also re-assign $this, e.g.: class Test { public function __construct() { var_dump($this); /* Quirk comes in here by using the concation operator */ /* ${'this'} is not possible and results in an E_ERROR */ ${'t' . 'his'} = 'Hello'; var_dump($this); } } If any whether this should be fixed within the Engine, then Dmitry would know so I'm re-assigning it to him for him to decide. As for a documentation issue, I really don't belive we should document such quirks in the official documentation else people will rely on such buggy "features".It's possible to do it even without dynamic tricks. <?php class Foo { function bar() { $x = &$this; $x = null; var_dump($this); } } $x = new Foo(); $x->bar(); ?> I would say I don't like to fix all these issues, because the fixes would slowdown absolutely legal PHP code.