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

Reply via email to