从PHP命名空间中定义全局函数

rya*_*nve 20 php namespaces

是否可以在PHP名称空间内(在具有名称空间声明的文件中)定义全局函数?如果是这样,怎么样?

<?php
namespace my_module;

# bunch of namespaced functions
# ...
# then I want to define a global function my_module()
# that is an alias to my_module\mymodule()
Run Code Online (Sandbox Code Playgroud)

dre*_*010 31

这是可能的,但除了糟糕的设计,你必须将你的代码在每个命名空间的括号内,并且将无法使用namespace my_module; 而不是必须namespace my_module { ... }.

例:

namespace my_module {

    function module_function()
    {
        // code
    }
}

namespace {
    // global namespace.

    function my_module()
    {
        // call your namespaced code
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 尽管强烈建议不要将多个名称空间组合到同一个文件中,这是一个“编码实践”,但出于很多合法的原因,人们可能需要以这种方式完成命名空间,但不一定意味着“ *不良设计*”,“ *不良结构*” ”或“ *错误编码*”。我们应该进行解释和教育,而不是动和批评。毕竟,由于某种原因,该语言允许某些“ *自由*”。http://php.net/manual/en/language.namespaces.definitionmultiple.php (2认同)