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

Reply via email to