Re: Php 5.3 Snap - Lambda functions and $this scope

From: Date: Thu, 24 Jul 2008 09:23:31 +0000
Subject: Re: Php 5.3 Snap - Lambda functions and $this scope
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-39260@lists.php.net to get a copy of this message
Hi,
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?
We had that in a previous patch. We had quite a few discussions on what the best syntax would be, actually. In the end, Dmitry and I chose to implement it in this way because it seemed more consistent with current PHP behaviour and because more people on internals seemed to like it than dislike it. As for the consistency with current PHP behaviour: $this is always present in any class method which is non-static. Every other variable (except superglobals) used in a method or function must explicitly be defined - either as a parameter, or in the function or via 'global $foo'. So $this is already special. So using the presence or absence of the 'static' keyword in front of the 'function' keyword to determine whether $this is available inside the closure seems much more natural. Of course, there will be people who disagree with this. But we've already discussed closure syntax quite a bit while discussion my original patch and I believe the compromise we've reached is quite acceptable for everybody. Regards, Christian

« previous php.internals (#39260) next »