Edit report at http://bugs.php.net/bug.php?id=50806&edit=1
ID: 50806
Updated by: [email protected]
Reported by: kominbhai at gmail dot com
Summary: $this can be assigned using variable casting
-Status: Assigned
+Status: Wont fix
Type: Feature/Change Request
-Package: Feature/Change Request
+Package: *General Issues
Operating System: Windows Vista
PHP Version: 5.*, 6, 7, 8, 9..
Assigned To: dmitry
New Comment:
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.
Previous Comments:
------------------------------------------------------------------------
[2010-01-24 04:56:45] [email protected]
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".
------------------------------------------------------------------------
[2010-01-20 15:48:54] 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
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/bug.php?id=50806&edit=1
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.