> On 15 May 2016, at 20:29, Dan Ackroyd <[email protected]> wrote:
>
> Hello,
>
> I've opened the voting for the Closure from callable RFC -
> https://wiki.php.net/rfc/closurefromcallable
>
> Just to note, some people I've spoken to have expressed a desire to
> have a more powerful syntax where 'bare' function names are used,
> like:
>
> callable(someFunctionName)
> callable($this->method)
>
> I fully agree with those people, however I can't see anyway to do that
> before PHP 8. It would almost certainly need some clean up of the
> allowed syntax to disambiguate what `$this->method` means for:
>
> class Foo {
> public $method;
> public function method() { }
> }
>
> Leaving that top-level function name available for future versions,
> where we might be able to support it properly, is one of the reasons
> to use the more verbose function name.
Hey Dan,
why would you need to support a $this->fieldName case though? If it's a field
it probably already contains a closure (or, well, if you need to make a closure
from arbitrary callable we could have a Closure::fromCallable named ctr).
Instead of making a function 'callable()', we could make a language construct:
expr:
...
| T_CALLABLE '(' callable_expr ')'
callable_expr:
'$this->' function_name
| class_name '::' function_name
| function_name
This would have an advantage of being statically checked (hence easier
refactoring in IDEs).
I see merging symbol tables as a pretty big of a deal for too much people, this
thing alone could easily create another case of Python 3 syndrome.
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php