Hi!

> I don't like that it's a function. Closure is a class, classes can have
> static and instance methods, and closure() looks like something that
> should be a method on Closure. In fact, it creates a closure, which a
> constructor would usually do. If we want to make it avoid duplication,
> okay, then it could be a static method. But I'm unconvinced it should be
> a function. Constructors go in their classes, we don't leave them lying
> around as global functions. That's messy and inconsistent.

Agree. Closure::fromCallable sounds like a good option.
That being said, I'm not sure how much need is for this - i.e. you can
always make a closure by just doing function() { return $this->blah(); }
if you need it. But the bigger question would be why you need more
specific type (Closure) instead of more generic (callable) and aren't
you overspecifying in that case?

And if we're into performance optimization - which should almost never
be done on language construct level, because performance considerations
vary and language constructs are forever - then it would be much better
to look into tail call optimizations. That would solve the barrier
between [$this, "foo"] and function() { return $this->foo(); } in many
practical cases.

-- 
Stas Malyshev
smalys...@gmail.com

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to