On Tue, Feb 11, 2020 at 1:43 PM Manuel Canga <manuelca...@gmail.com> wrote:

> On Tue, 11 Feb 2020 at 13:16, Nicolas Grekas
> <nicolas.grekas+...@gmail.com> wrote:
> >
> >
> >
> > Le mar. 11 févr. 2020 à 12:52, Diogo Galvao <diog...@gmail.com> a écrit
> :
> >>
> >> On Tue, Feb 11, 2020 at 8:14 AM Manuel Canga <manuelca...@gmail.com>
> wrote:
> >> >
> >> > Hi internals,
> >> > I Would like to present a possible new "::func resolution" for your
> >> > consideration.
> >> ...
> >> > use function \My\I18N\i18n_translate;
> >> >
> >> > $mapped_array = array_map(i18n_translate::func, $array);
> >> ...
> >> > What is your opinion ? Do you see it useful ?
> >>
> >> I've wished for this on many occasions and think it'd be really useful,
> as long
> >> as it could work with methods as well:
> >>
> >> $mapped_array = array_map(I18N::translate::function, $array);
> >>
> >> For what it's worth I guess it could just return [I18N::class,
> 'translate'].
> >
> >
> > I wish this would return a Closure instead, making $foo::function the
> equivalent of Closure::fromCallable($foo).
>
> Hi, Nicolas,
>
> Currently, when <class_name>::class is used, class with <class_name>
> can or cannot exists in that moment.
> Using <function_name>::func( or <function_name>::function ), I think
> should keep the same behavior.
>
> Using ::func as alias of "Closure::fromCallable" check if function
> exists in that moment. It is certainly useful, but, I think it's more
> important be consistent
>

Checking whether the function exists is really unavoidable for functions,
because you don't know whether

namespace Foo;
var_dump(strlen::function);

refers to 'Foo\strlen' or 'strlen', without first trying to look up the
former.

I agree with Nicolas that this kind of feature would provide the most value
if it created a Closure. This would circumvent all the issues outlined in
https://wiki.php.net/rfc/consistent_callables.

Regards,
Nikita

Reply via email to