On Mon, Jan 27, 2020 at 3:43 PM tyson andre <tysonandre...@hotmail.com>
wrote:

> > This would be a compile error right now though, because we don't allow
> "use"d symbols and declarations to clash.
>
> As I surprisingly discovered when implementing the RFC, they don't clash.
> The PHP interpreter has a special case where it doesn't warn or throw
> about the name being in use
> if the resolved (namespaced) name in use is the same as the element being
> declared.
> See https://3v4l.org/RtPKv - the below example works.
>
> ```
> <?php
>
> namespace NS;
> use function NS\foo;
> use const NS\BAR;
>
> function foo() { echo BAR; }
> const BAR = 3;
> foo();
> ```
>

Interesting :)


> > While I was the one who originally suggested to allow this kind of code,
> > I think it might be better to just unconditionally make it a compile
> error,
> > and require the use of declare(function_and_const_lookup='default')
> > if you want to declare namespaced constants or functions.
> >The main motivation for allowing it is interoperability with
> namespace-scoped declares,
> > but as those don't exist yet (and would still allow a per-file opt-out),
> we can delay this issue.
> >
> > I think that principally, the correct behavior here is to bring the
> symbol into scope as it is declared,
> > but as you already pointed out, this leads to unclear semantics when
> conditional function declarations are involved.
>
> The subset of code that can be written requiring "use function NS\foo;"
> and "use function NS\MY_CONST;"
> with function_and_const_lookup='default' is larger than forbidding it
> completely, while still avoiding ambiguity.
>

Right ... well, as the above code isn't a compile-error like I expected, I
guess this is fine :)


> > As a minor note, rather than using 'default' as one of the values,
> > I think it would be better to use 'fallback' to make it robust against a
> potential future change of defaults.
>
> I'd rather have that done when the future change of defaults is being
> proposed.
> Supporting 'fallback' might cause confusion and extra work if the name
> resolution defaults ever change in a different way.
> At the point where they do change, we either do or don't want a way to
> support the old 'fallback',
> but we will want to support the new 'default'.
>
> Right now, it's deliberately intended to be the same as just leaving the
> setting off for that file.


Sounds reasonable.

Nikita

Reply via email to