See below:

> -----Original Message-----
> From: Alexander Wagner [mailto:[EMAIL PROTECTED]
> Sent: Friday, June 27, 2008 12:31 PM
> To: internals@lists.php.net
> Cc: Andi Gutmans; Dmitry Stogov; Christian Seiler; Stas Malyshev
> Subject: Re: [PHP-DEV] [PATCH] [RFC] Closures and lambda functions in PHP
> 
> Implicit unoptimized $this is never going to be a "huge issue", because it is
> not badly broken, only sublty.
> My crystal ball tells me that the following is going to happen:
> - Many people who use closures will expierience a slight increase in memory
> consumption due to closures. They won't notice though, unless they run on a
> memory_limit with little margin for error.
> - Developers with objects that use a lot of memory (e.g. because they contain
> large strings or hold references to many other objects) will expierience a
> significant increase in memory consumption (constant or linear) that may be
> enough to cause noticable performance degradation and pop quite a few memory
> limits. This is going to be relatively rare, but it will happen regularly.
> PHP has a lot of users using shared hosting services.
> - A very small number of developers will manage to implement an algorithm
> whose space complexity is changed from O(1) to O(n) or worse, which can
> easily cause a catastrophic increase in memory consumtion, even when PHP is
> operating without memory limit.
> 
> Also, most of the developers to whom this happens will either not notice at
> all or be unable to give accurate feedback, so if this does become a
> significant problem, you may never find out.
> 
> > we can always add support for something like "static function() {}"
> 
> That kind of implies that the lambda-function is part of the class because it
> was created inside the class. I don't like this notion. Membership in the
> class should be reserved for actual members.

Uhm, but we are already discussing closures which belong to the class. In fact, 
what I suggest is not different from what the current proposal is. I actually 
think this is *much* cleaner and more straightforward than any constructs which 
rely on some explicit $this to be passed.

> You could start with explicit $this, which is inconvenient but safe.
> If enough developers complain about the inconvenience, you have a lot of time
> to think about how to implement an optimized implicit $this. I don't see any
> BC-problems here.
> 
> "Start safe, optimize later" seems sounder than "Start sublty broken, fix
> later".

I don't really consider it broken and I don't think that this additional syntax 
is what I'd call start safe. I already made a suggestion for how to fix this 
down the road. And if there's a preference to do it today I don't mind having 
the "static function" syntax today. I think it's extremely consistent with what 
PHP already does.

Cheers,

Andi

Reply via email to