有没有办法让PHP命名空间允许在命名空间内调用函数,就好像它们是全局的一样?
示例:
handle()
而不是:
prggmr\handle()
这是我的示例代码:
<?php
require_once 'prggmr/src/prggmr.php';
prggmr\handle(function() {
echo 'This is a test scenario';
}, 'test');
prggmr\signal('test');
别名对函数不起作用:
<?php
require 'prggmr/src/prggmr.php';
use prggmr\handle;
handle(function(){
echo "Test";
}, "test");
结果:
Fatal error: Call to undefined function handle()
答案 0 :(得分:2)
答案 1 :(得分:2)
根据我的理解,文档中的这段摘录说不可能......
无法通过use语句导入函数和常量。
来源:
http://www.php.net/manual/en/language.namespaces.faq.php#language.namespaces.faq.nofuncconstantuse
答案 2 :(得分:0)
我以为我最近了解到的那样为现代PHP添加答案:
在PHP 5.6之前,函数和常量都不能通过use语句导入。 从PHP 5.6开始,允许使用别名或导入函数和常量名称。
所以你的第二个代码示例应该可以正常运行。
另外值得一提的是,您可以为PHP命名空间定义块范围though it's discouraged。所以这会奏效:
<?php
require_once 'prggmr/src/prggmr.php';
namespace prggmr {
handle(function() {
echo 'This is a test scenario';
}, 'test');
signal('test');
}