是否可以从 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()
是否可以从 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()
这是可能的,但除了设计不好之外,您还必须将代码括在每个命名空间的括号内,并且无法使用,namespace my_module;
而是必须是namespace my_module { ... }
.
例子:
namespace my_module {
function module_function()
{
// code
}
}
namespace {
// global namespace.
function my_module()
{
// call your namespaced code
}
}
“包含”文件中定义的函数具有全局范围。
所以(我还没有验证这一点)你可以把你的函数声明放在一个小文件中,并包含它。
不完全是问题中的设想。
另一种方法是创建一个局部函数,并在其中使用“全局”关键字,并将一个闭包分配给一个全局变量——然后可以在任何你想要的地方“作为一个函数”使用它。我当然已经为普通变量做到了这一点,而且我认为它没有理由不适用于闭包。