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