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

2022-08-30 17:10:40

是否可以从 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()

答案 1

这是可能的,但除了设计不好之外,您还必须将代码括在每个命名空间的括号内,并且无法使用,相反,它必须是 。namespace my_module;namespace my_module { ... }

例:

namespace my_module {

    function module_function()
    {
        // code
    }
}

namespace {
    // global namespace.

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

答案 2

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

所以(我还没有验证这一点),你可以把你的函数声明放在一个小文件中,并包含它。

不完全是问题中设想的。

另一种方法是创建一个局部函数,并在其中使用“global”关键字,并为全局变量分配一个闭包 - 然后可以在任何您想要的地方将其“用作函数”。我当然已经为普通变量这样做了,我认为没有理由它不适用于闭包。


推荐