ID: 45604 Updated by: [EMAIL PROTECTED] Reported By: george at noodles dot gr -Status: Feedback +Status: Bogus Bug Type: Scripting Engine problem Operating System: * PHP Version: 5.3CVS-2008-07-23 (snap) New Comment:
Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php This is the intended behavior. Use "static function" if you don't need $this. Previous Comments: ------------------------------------------------------------------------ [2008-07-23 13:48:21] [EMAIL PROTECTED] Please report this kind of things to [EMAIL PROTECTED] as this feature is still under heavy development and jury is out to decide such things. ------------------------------------------------------------------------ [2008-07-23 12:07:06] george at noodles dot gr 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. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=45604&edit=1