【问题标题】:Why is Importing a PHP Function into the Current Namespace Unsupported为什么不支持将 PHP 函数导入当前命名空间
【发布时间】:2013-06-29 00:35:38
【问题描述】:

根据PHP documentation

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

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

【问题讨论】:

  • 这些限制与 C# 基本相同。您也不能在该语言中“导入”或“别名”单个函数或常量。为什么要这样做?
  • @RobertHarvey 以类似于 python 的风格编写代码/系统。
  • @Robert 因为这样可以更方便? bar() 而不是 Foo\bar()...
  • @AlanStorm PHP 是一种带有接口的大括号语言,不是吗? Python 的编程方法完全不同。 C# 使用 扩展方法使这更容易一些。
  • wiki.php.net/rfc/namespaces (9. 导入函数)

标签: php php-internals


【解决方案1】:

我联系了 Jochem Maas(作者 of this five year old RFC),虽然他不愿指出一个原因(可以理解,因为他目前没有深入参与命名空间系统),但他的三个因素是

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

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

  3. 对于如何处理自动加载器以及特定功能的导入/混叠存在一些不确定性/意见分歧。 (自动加载器是一个单独的系统,仅适用于类)

最终,PHP 的实用主义赢得了胜利,这就是我们拥有今天的命名空间系统的原因。

【讨论】:

    猜你喜欢
    • 2010-12-19
    • 1970-01-01
    • 2021-11-06
    • 2016-02-01
    • 2011-06-18
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多