为什么不支持将PHP函数导入当前命名空间


Why is Importing a PHP Function into the Current Namespace Unsupported

根据PHP文档

PHP命名空间支持三种别名或导入:别名类名、别名接口名和别名命名空间。请注意,不支持导入函数或常量。

有人知道为什么不支持导入函数或常量的历史或技术背景吗?

我联系了Jochem Maas(这个已有五年历史的RFC的作者),虽然他犹豫是否要指出一个原因(可以理解,因为他目前还没有深入参与命名空间系统),但他的三个因素是

  1. 类名冲突比函数名冲突更像是一个现实世界中的问题

  2. PHP函数和类位于引擎代码的不同区域,在use语句中解析出哪个是哪个存在技术障碍。

  3. 在如何处理自动加载器和特定函数的导入/别名方面存在一些不确定性/意见分歧。(自动加载器是一个单独的系统,仅适用于类)

最后,PHP的实用主义赢得了胜利,这就是为什么我们拥有今天的名称空间系统。