Re: [RFC]

From: Date: Thu, 13 Feb 2020 17:06:25 +0000
Subject: Re: [RFC]
References: 1 2 3 4 5 6 7 8 9 10  Groups: php.internals 
Request: Send a blank email to internals+get-108544@lists.php.net to get a copy of this message
> On Feb 13, 2020, at 2:33 AM, Rowan Tommins <rowan.collins@gmail.com> wrote: > > On 13 February 2020 03:33:32 GMT+00:00, Mike Schinkel <mike@newclarity.net> wrote: >>> On Feb 12, 2020, at 5:47 PM, Rowan Tommins <rowan.collins@gmail.com> >> wrote: >>> >>> On 12/02/2020 03:58, Mike Schinkel wrote: >>>> Returning a_closure_ instead of a string would be providing a >> feature we_already_ have instead of one we do_not_ have. >>> >>> >>> Not really, because you still need a way to get the fully-qualified >> name of the function. This is not valid: >>> >>> namespace MyVendor\Something\Foo; >>> function bar() {} >>> >>> \Closure::fromCallable('bar'); # Error: tries to resolve function >> '\bar' >>> >> >> Why would ::function return a short name instead of the fully-qualified >> name? > > > I never said it would; the intent of this example was to show what is possible in current PHP, > in response to your comment about returning a closure being "a feature we already have". > The key new feature being proposed is a way to resolve an unqualified function name based on > current namespace and imports, without calling the function. The open question is whether the result > of that should be expressed as a string or as a Closure object, but in current PHP the feature > doesn't exist at all. Let me clarify for you what I was trying to say. 1. IF foo::function returns a name string THEN using Closure::fromCallable( foo::function ) can provide a closure. 2. IF foo::function returns a closure THEN how to we get the name string? Hence we already have a way to get the closure _if_ ::function returns a name string, but we would *not* have a way to get the name string if ::function returns a closure. IOW, we can already derive a closure if we have a name, but we cannot derive a name if we have a closure. I hope this clarifies what I was trying to say when I said "we already have it." -Mike

« previous php.internals (#108544) next »