2014-04-10 76 views
0

我徘徊爲什麼下面的代碼給出了一個錯誤:致命錯誤,與命名空間在PHP

<?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應該能夠在當前命名空間中導入該函數。

回答

1

看看文檔中關於aliasing和調用你的函數是這樣的:

Routers\exploder($_SERVER["REQUEST_URI"]); 
+0

那麼,呃,那麼使用use關鍵字的意義呢?我很困惑。 – iOi

0

「使用」關鍵字允許別名其他命名當前的命名空間內。這裏你已經包含了一個全局命名空間和你想要使用的特定類,路由器。爲了讓您的代碼工作,明確地叫出這個名字空間作爲我在下面做,

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"])"; 

當你使用'對命名空間Notebook \ Routers使用'命令,命名空間被隱式地命名爲路由器。由於您沒有在同一個文件中使用多個命名空間,我不相信使用'use'關鍵字是必要的。