Re: [Concept] Flip relative function lookup order (global, then local)
| From: | Nick Lockheart | Date: | Fri, 23 Aug 2024 09:34:06 +0000 |
| Subject: | Re: [Concept] Flip relative function lookup order (global, then local) | ||
| References: | 1 2 3 4 5 6 7 8 9 10 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-125114@lists.php.net to get a copy of this message | ||
> >
> >
> > A third option, which I haven't seen come up on the list yet, is
> > that
> > unqualified functions that are PHP built-ins are treated as global,
> > and
> > using a function having the same name as a built-in, in a namespace
> > scope, requires a fully qualified name to override the built-in.
> >
> > It seems that if someone is writing
array_key_exists() or
> > similar
> > they probably mean the built-in function, and in the rare cases
> > where
> > they do mean \foo\array_key_exists(), they can write it
> > explicitly.
> >
> > Functions that are *not* on the built-in function list could
> > default to
> > the local namespace.
>
> I was actually thinking of doing something like this for function
> autoloading, where extensions could register global functions that
> bypass the autoloader and go straight to global if it isn't defined
> in the local namespace already. I decided not to even bring it up
> because it felt controversial (it would effectively be global first,
> except for user functions). Though, it might be a nice compromise?
>
> — Rob
I think we are all trying to achieve the same thing here.
There's different ways to go about it, each with pros and cons, but I
think we need to think through how all the parts fit together, because
I think if we can reach consensus, then several RFCs become compatible
with each other.
A change to how function namespace lookup works would affect function
auto-loading, and it may even make it simpler, depending on the other
options that we end up going with.