This is based on a bug submitted at http://bugs.php.net/bug.php?id=45604
Description:
------------
When creating a normal function inside a class and calling it, the
function doesn't have access to $this.
"Fatal error: Using $this when not in object context"
When creating a lambda function inside a class, $this is visible from
the new function's scope and can be accessed normally.
Wouldn't it be better (and maybe safer) to allow the use of $this as a
closure instead of passing it to the new lambda function?
Currently trying to use $this as a closure dies with a "Fatal error:
Cannot use $this as lexical variable" error.
Example for the suggestion.
$x = function () use ($this) { return $this->hello; };
Reproduce code:
---------------
> <?php
>
> class something
> {
> public $hello = 'Hello world!';
>
> public function world()
> {
> $x = function () { return $this->hello; };
> return $x();
> }
> }
>
> $s = new something();
> echo $s->world();
>
> ?>
Expected result:
----------------
Not to be able to use $this.