致命错误,与php中的命名空间有关

时间:2014-04-10 23:43:12

标签: php namespaces fatal-error traits

我在徘徊为什么以下代码会出错:

<?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应该能够导入当前命名空间中的函数。

2 个答案:

答案 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;关键字是必要的。