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.

Reply via email to