我在徘徊为什么以下代码会出错:
<?php
namespace Notebook\Routers{
function exploder($request_uri){
$explode = explode("/", $request_uri);
return ["count"=> count($explode), "values"=>$explode];
}
}
namespace{
use Notebook\Routers;
exploder($_SERVER["REQUEST_URI"]);
}
它说Fatal error: Call to undefined function exploder() in /var/www/index.php on line 13
除非有我遗漏的东西。 use Notebook\Routers
应该能够导入当前命名空间中的函数。
答案 0 :(得分:1)
只需查看有关aliasing的文档,并按照以下方式调用您的函数:
Routers\exploder($_SERVER["REQUEST_URI"]);
答案 1 :(得分:0)
使用&#39; keyword允许您为当前命名空间中的其他命名空间添加别名。在这里,您包含了一个全局命名空间和您想要使用的特定类,路由器。为了让你的代码能够工作,请按照我在下面的描述显式调出命名空间,
namespace Notebook\Routers{
function exploder($request_uri){
$explode = explode("/", $request_uri);
return ["count"=> count($explode), "values"=>$explode];
}
}
namespace Notebook\Routers{
exploder($_SERVER["REQUEST_URI"]);
}
或者,您可以使用上一个答案的建议并使用功能
Routers\exploder($_SERVER["REQUEST_URI"])";
当您使用&#39;使用&#39;命名空间Notebook \ Routers,该命名空间隐式别名为路由器。由于您没有在同一个文件中使用多个名称空间,因此我不相信使用&#39;使用&#39;关键字是必要的。