【问题标题】:php - make a function available in a namespacephp - 使函数在命名空间中可用
【发布时间】:2014-07-10 16:52:13
【问题描述】:

我是 php 命名空间的新手,我想知道以下是否可行:

我有一个函数 my_function,我希望它只在单个命名空间的类中可用。

例如,在一个文件helpers.php我有

function my_function() {
    return 'something';
}

fileA

namespace my_namespace
class A {}

fileB

namespace my_namespace
class B {}

fileC

namespace other_namespace
class C {}

有没有办法让函数 my_function 在 A 类和 B 类中可用,但在 C 类中不可用?

有点好奇,为了更好地理解这个概念。

【问题讨论】:

    标签: php namespaces autoload


    【解决方案1】:

    不,这不是命名空间的用途。

    PHP manual中所述:

    在 PHP 世界中,命名空间旨在解决库和应用程序的作者在创建类或函数等可重用代码元素时遇到的两个问题:

    1. 您创建的代码与内部 PHP 类/函数/常量或第三方类/函数/常量之间的名称冲突。
    2. 能够为 Extra_Long_Names 起别名(或缩短),旨在缓解第一个问题,提高源代码的可读性。

    PHP 命名空间提供了一种对相关类、接口、函数和常量进行分组的方法。

    关于您的代码:如果您的 helpers.php 文件中没有命名空间,则 my_function() 将添加到 Global space 中,并且可以在您的应用程序中的任何位置调用。

    如果您在fileA 中声明该函数,则可以使用\my_namespace\my_function() 从应用程序中的任何位置调用它。

    【讨论】:

      猜你喜欢
      • 2015-03-15
      • 2015-11-05
      • 2013-08-16
      • 1970-01-01
      • 2017-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多