[VOTE][RFC] Closure::apply() (re-opening)

php.internals

Andrew Faulds

12 years ago
Good afternoon, I’m putting this RFC to a vote again as I haven’t heard any objections in the past three days, and in the event something’s been missed, one week would be long enough to spot it. Vote is here: https://wiki.php.net/rfc/closure_apply#vote It ends 2014-08-27. Thanks!
-- Andrea Faulds http://ajf.me/

Nathan Bruer

12 years ago
The only thing I'd suggest is like I said in the last email is to make the syntax more like Closure::bind(Closure $closure, object $newThis, [mixed $newScope = 'static']) and make it Closure::apply(mixed $newObjectOrScope [, mixed ... $parameters]) $newObjectOrScope would then allow a user to supply a class name or an object. If class name is passed you have access to "static::", "self::", and "parent::" inside the function everything else works as described in the RFC. Give the ability to call a closure as a static method of a class or a normal method of an object. Right now the only way to do it is doing binding and creating new closures and calling those closures then destroying them. On Wed, Aug 20, 2014 at 7:50 AM, Andrea Faulds <ajf@ajf.me> wrote:

Levi Morrison

12 years ago
On Wed, Aug 20, 2014 at 11:51 AM, Nathan <nathan.bruer@starin.biz> wrote:
> The only thing I'd suggest is like I said in the last email is to make the > syntax more like Closure::bind(Closure $closure, object $newThis, [mixed > $newScope = 'static']) and make it Closure::apply(mixed $newObjectOrScope > [, mixed ... $parameters]) $newObjectOrScope would then allow a user to > supply a class name or an object. If class name is passed you have access > to "static::", "self::", and "parent::" inside the function everything else > works as described in the RFC. > > Give the ability to call a closure as a static method of a class or a > normal method of an object. Right now the only way to do it is doing > binding and creating new closures and calling those closures then > destroying them.
I think you are confused. This proposal basically binds the closure to the new object and invokes it immediately. I genuinely don't see how it being statically bound to the object will make a difference. Please elaborate.

Nathan Bruer

12 years ago
I suppose calling it statically a user would probably want to recycle the same function/closure, so binding/calling it real time would have little impact if done properly. On Wed, Aug 20, 2014 at 2:30 PM, Levi Morrison <levim@php.net> wrote:

Andrew Faulds

12 years ago
On 20 Aug 2014, at 13:50, Andrea Faulds <ajf@ajf.me> wrote:
> I’m putting this RFC to a vote again as I haven’t heard any objections in the past three days, and in the event something’s been missed, one week would be long enough to spot it. > > Vote is here: https://wiki.php.net/rfc/closure_apply#vote > > It ends 2014-08-27. Thanks!
Voting has ended. With 13 votes in favour and none against, the RFC is accepted. Unfortunately, as it affects /Zend, I don’t have the karma to merge this myself. I updated the pull request to work with int64. The pull request can be found here: https://github.com/php/php-src/pull/775 Thanks!
-- Andrea Faulds http://ajf.me/