|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2008-07-23 13:48 UTC] jani@php.net
[2008-07-23 23:05 UTC] stas@php.net
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sun Nov 02 21:00:02 2025 UTC |
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.