Hi Kalle,
> 3) Closures, theres alot of closure differences in HEAD and 5.3, for
> example HEAD has ReflectionMethod::getClosure() and
> ReflectionFunction::getClosureThis(), but 5.3 does not, which makes it
> looks like a change in 5.3 that never occured to HEAD, unless that is
> the logic is fixed in HEAD. We should really fix this, so 5.3 have
> these if needed.
The reason for this is that I removed $this and OOP support from closures
on Johannes's and Lukas's request in 5.3 since there was no consensus
on how this should actually work (see [1]). I didn't revert in HEAD
because there was at least consensus on the fact that someday in the
future Closures should support OOP/$this after we decide how. The
discussion on that topic has not progressed, however - nobody actually
reacted to my explanation on this topic (see [2]) - even after the
removal in 5.3 (which was done in order to allow the discussion to
progress independently of 5.3 so that a solution is not forced due to
time constraints).
My rationale for not removing it from HEAD was the simple fact that I
thought the discussion on this topic would progress and after 5.3 we
would reach a consensus on how to implement that. In that case, the
code in HEAD would have only needed to be changed, but not re-added.
I did not anticipate that the discussion would die down completely
for so long and that no progress would be made in that case.
Anyway, we have the following two options for HEAD:
1. Sync HEAD with 5.3 and remove that stuff also. Which could lead
to additional, unecessary work after we decide which way we want
to go.
2. Leave it as is until we have decided.
Anyway, if anybody wants to renew the discussion on this topic, look
at [2] where all the details and problems are explained.
[1] http://wiki.php.net/rfc/closures/removal-of-this
[2] http://wiki.php.net/rfc/closures/object-extension
(please ignore "timeline" in the second link,
it's outdated)
Regards,
Christian
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php