On Fri, Aug 23, 2024, at 21:41, Rowan Tommins [IMSoP] wrote:
> 
> 
> On 23 August 2024 18:32:41 BST, Ilija Tovilo <tovilo.il...@gmail.com> wrote:
> >IMO, 1. is too drastic. As people have mentioned, there are tools to
> >automate disambiguation. But unless we gain some other benefit from
> >dropping the lookup entirely, why do it?
> 
> I can think of a few disadvantages of "global first":
> 
> - Fewer code bases will be affected, but working out which ones is harder. 
> The easiest migration will probably be to make sure all calls to namespaced 
> functions are fully qualified, as though it was "global only".
> - Even after the initial migration, users will have to watch out for new 
> conflicting global functions. Again, this can be avoided by just pretending 
> it's "global only". 
> - The engine won't be able to optimise calls where the name exists locally 
> but not globally, because a userland global function could be defined at any 
> time.
> - Unlike with the current way around, there's unlikely to be a use case for 
> shadowing a namespaced name with a global one; it will just be a gotcha that 
> trips people up occasionally.
> 
> None of these seem like showstoppers to me, but since we can so easily go one 
> step further to "global only", and avoid them, why wouldn't we? 
> 
> Your answer to that seems to be that you think "global only" is a bigger BC 
> break, but I wonder how much difference it really makes. As in, how many 
> codebases are using unqualified calls to reference a namespaced function, but 
> *not* shadowing a global name?

I can think of more than one one-off script where I have written something like 
this:

namespace blah;

function read_and_process_file(): array {
}

function do_something(array $file): void { }

$file = read_and_process_file();
var_dump($file);
// die(); // debug
do_something($file);

If it were global only, then how would I call those files? 
namespace\read_and_process_file()?

That seems worse ergonomics and not better, for very little gain.


> 
> Regards,
> Rowan Tommins
> [IMSoP]
> 

— Rob

Reply via email to