On 6/17/08, Larry Garfield <[EMAIL PROTECTED]> wrote:
> - I am a little confused about the OOP interaction. How does a function
> become a public method of the class?
>
> class Example {
> private $a = 2;
>
> function myMethod($b) {
> $lambda = function() {
> lexical $b;
> return $this->a * $b; // This part I get
> };
> return $lambda;
> }
> }
>
> $e = new Example();
> $lambda = $e->myMethod();
> $e->$lambda(5);
>
> That doesn't seem right at all, but that's how I interpret "Essentially,
>
> closures inside methods are added as public methods to the class that
>
> contains the original method." Can you give an example of what that actually
> means?
As far as I understand, it means following:
class Example
{
private $a = 1;
private function b()
{
return 2;
}
public function getLambda($param)
{
$lambda = function($lparam) {
lexical $param;
return $this->a + $this->b() + $param + $lparam;
}
return $lambda;
}
}
$obj = new Example();
$lambda = $obj->getLambda(3);
$result = $lambda(4); // 1+2+3+4 => 10
--
Alexey Zakhlestin
http://blog.milkfarmsoft.com/
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php