Hi,
I object to the following proposed behaviour, which is confusing:
<?php
declare(function_and_const_lookup='global');
namespace MyNS;
function sprintf($msg, ...$args) {
// this and remaining statements still refer to \sprintf, not MyNS\sprintf
return sprintf("Prefix $msg", ...$args);
}
?>
I think we can do better, following the example of what we have today, namely:
Currently, the following triggers a fatal error:
<?php
namespace MyNS;
use function OtherNS\foo;
function foo() { }
// Fatal Error: Cannot declare function MyNS\foo because the name is already in
use
?>
Therefore I suggest that the following be an error:
<?php
declare(function_and_const_lookup='global');
namespace MyNS;
function foo() { }
// Fatal Error: Cannot declare function foo because the name refers is in the
global namespace
?>
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
?>
—Claude
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php