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

时间:2012-12-03 23:49:07

标签: php namespaces

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

<?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()

2 个答案:

答案 0 :(得分:28)

除了糟糕的设计之外,您可能需要为每个命名空间包含代码within brackets,并且无法使用namespace my_module;而是必须namespace my_module { ... } }。

示例:

namespace my_module {

    function module_function()
    {
        // code
    }
}

namespace {
    // global namespace.

    function my_module()
    {
        // call your namespaced code
    }
}

答案 1 :(得分:0)

“包含”文件中定义的功能具有全局作用域。

因此(我尚未验证),您可以将函数声明放在一个小文件中并包含它。

与问题中所设想的不完全相同。

另一种方法是创建一个局部函数,并在其中使用'global'关键字,并为全局变量分配一个闭包-然后可以在需要的地方将其用作“函数” 。 我当然已经对普通变量完成了此操作,但我认为没有理由对闭包不起作用。