What are your thoughts about syntax such as the following, similar to the syntax for Java (only for use of functions/constants from the root scope)
<?php namespace My\NS; use function *; use const *; // can use functions/constants from namespaces that aren't the global namespace to override '*' // "use *" is not valid. printf("PHP Version is: %s\n", PHP_VERSION); A similar opt-in directive syntax "use function root;" was mentioned as an alternative to the "Deprecation of fallback to root scope" RFC https://marc.info/?l=php-internals&m=151788196501507&w=2 . (I couldn't find any other mentions after a quick search) Benefits of "use function *": - Visually cleaner and less prone to merge conflicts than "use" for dozens of functions/constants all from the root scope. (or writing \printf("PHP Version is: %s\n", \PHP_VERSION), or mixes of the above) - Due to the absence of function autoloading (not supported in php to performance overhead), functions outside the global scope are rare in practice. - This would make it easier to make edits to a project (if the project's code style involves the unambiguous use of functions/global constants) - This makes using unambiguous functions/global constants easier. (for a small performance boost due to the php interpreter not needing to check both namespaces, opcache knowing exactly which function/constant it is, etc) - Does not break third-party code The other RFC https://wiki.php.net/rfc/fallback-to-root-scope-deprecation had the following notable objections, and I'm not sure of the current status of it: - Deprecating the behavior of existing code would break (possibly unmaintained) third-party libraries and require a lot of code changes, discouraging updates "use function *;" wouldn't. - Some mocking libraries will declare functions in namespaces being tested, with the same name as the global function. My proposal has similar drawbacks - third party code that started using "use function *" would break those libraries (but so would manually adding the same namespace uses). But there are alternatives to those libraries, such as uopz, runkit7, and SoftMocks (SoftMocks changes the class autoloader to replace code with instrumented code). -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php