> and that you have to explicitly say that you use the current namespace for
> that name:
>
> <?php
> declare(function_and_const_lookup='global');
> namespace MyNS;
> use function MyNS\foo;
> // or, equivalently: use function namespace\foo:
>
> function foo() { }
>
> foo(); // <-- this is the function defined just above
That's a good solution to the ambiguity that I hadn't considered. Functions and
constants should be relatively uncommon for most projects, although I can see
it getting repetitive for a file with dozens of constants.
(e.g. with namespace-scoped declares)
define() or declare(function_and_const_lookup='global') should be adequate
workarounds.
- A subsequent RFC could reduce the restriction and make "const X = ..." always
act as though it was immediately preceded by "use const X"
This works better for constants than functions because constants can't be
declared anywhere but the top level.
`use function namespace\foo;` is a syntax error, though. It can only be used as
`namespace\foo();`. It may be useful to add if projects adopt
function_and_const_lookup, or other changes to namespace resolution get made.
- Tyson
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php