On Tue, Jan 28, 2020 at 8:22 PM tyson andre <tysonandre...@hotmail.com> wrote:

> Hi internals,
>
> I've opened the vote on https://wiki.php.net/rfc/use_global_elements

Thank you for working to address the issue of ambiguous function references. 
However, I really don't think this is the right approach.

The RFC mentions two problems it hopes to solve: a minor performance decrease, 
and developers having to deal with ambiguity. However, a third problem that I 
think is just as important to fix is the lack of function autoloading which 
makes extensive use of namespaced functions unfeasible.

Unfortunately, the new directive proposed by this RFC would make declaring 
functions in namespaces even more difficult, as it would now be necessary to 
explicitly `use` each function and constant in the same file it is declared in. 

The RFC argues that having to "add multiple `use function function_name` and 
`use const MY_CONST` at the top of the namespace" is prone to merge conflicts 
and inconvenient to keep up to date. However, the RFC just shifts this problem 
from global functions to namespaced functions.

Changing function/const resolution to always look in the global scope instead 
of current namespace is backwards from how classes and interfaces are resolved, 
and seems destined to become another language Sadness. Wouldn't it be more 
straightforward and intuitive to add a directive like 
`declare(namespace_lookup=1)` which would resolve functions/consts the same way 
as classes (without the global fallback)?

The RFC argues that writing global functions as `\function_name()` is more 
verbose. But is one backslash character per global function call any more 
verbose than having to add a 44-character declare statement at the top of every 
file? Developers are already used to referencing global classes and functions 
with backslashes or explicit `use` statements, and in a future where we have 
function autoloading and utilize more namespaced functions, this approach will 
be less verbose than having to explicitly `use` every namespaced function in 
the same file it is declared in. Plus, IDEs and other tools can automatically 
add the backslashes or `use` statements for global functions.

Best regards,
Theodore
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to