wt., 11 lut 2020, 20:08 użytkownik Dik Takken <d.h.j.tak...@freedom.nl> napisał:
> On 11-02-2020 17:48, Dan Ackroyd wrote: > > I didn't include the following in that RFC, because I thought it would > > be too controversial, but I think it's worth considering a new syntax > > for this. > > > > Given the code: > > > > function foo(); > > class Zoq { > > public function Fot() {} > > public static function Pik() {} > > } > > $obj = new Zoq(); > > > > > > Then these: > > > > $(foo); > > $($obj, Fot); > > $(Zoq, Fot); > > > > Would be equivalent to: > > > > Closure::fromCallable('foo'); > > Closure::fromCallable([$obj, 'Fot']); > > Closure::fromCallable('Zoq::Fot'); or Closure::fromCallable(['Zoq', > 'Fot']); > > > > Or similar. > > Given the fact that $() would only accept functions and methods as > argument, this idea could be taken one step further by writing: > > $(foo); > $($obj->Fot); > $(Zoq::Fot); > > Referring to a method like this is normally not possible because it is > ambiguous. However, wrapped inside $(), which only accepts functions and > methods, the ambiguity disappears. > > The $() syntax is nice and short. And something completely new. As new > syntax can only be 'spent' once, more familiar alternatives should be > explored as well. Thinking about the existing list() and array() syntax, > another possibility could be: > > closure(foo); > closure($obj->Fot); > closure(Zoq::Fot); > It looks like a function but it's not a function cause what you have inside parentheses looks like a const, property and class const. IMO a statement like that for consistency it should be with no parentheses like: $foo = closure foo; $foo = closure $obj->Fot; $foo = closure Zoq::Fot; Cheers, -- Michał Brzuchalski >