2012-05-15 87 views
7

我試圖找到一種方法來批量應用這些命名空間,因爲這將不方便寫出來。我知道我可以簡單地做,使用jream\ as j但我想看看是否有可能避免反斜槓。這是否有一個PHP命名空間的快捷方式?

require '../jream/Autoload.php'; 

use jream\Autoload as Autoload, 
    jream\Database as Database, 
    jream\Exception as Exception, 
    jream\Form as Form, 
    jream\Hash as Hash, 
    jream\Output as Output, 
    jream\Registry as Registry, 
    jream\Session as Session; 

new Autoload('../jream'); 

難道沒有辦法沿這些方向說話:jream\\* as *;

任何提示,將不勝感激:)

回答

6

至少,你可以跳過所有冗餘as別名:

use jream\Autoload, 
    jream\Database, 
    jream\Exception, 
    jream\Form, 
    jream\Hash, 
    jream\Output, 
    jream\Registry, 
    jream\Session; 

如果你想使用命名空間中的一切,而不需要通過鍵入了一個一個,那的確是唯一真正的選擇是別名命名空間作爲一個整體,用一個反斜槓:

use jream as j; 

new j\Autoload; 
+0

謝謝,這可能是最好的辦法。 – JREAM

3

是不是有辦法沿着這些方向說話:jream \ * as *; ?

沒有,但你可以這樣做:

// use-jream.php 
class Autoload extends jream\Autoload {} 
class Database extends jream\Database {} 
... 

// index.php 
require_once 'use-jream.php' 

new Autoload('../jream'); 

但我不會真的建議這樣做。

和當然,如果你想只改變默認的命名空間:

namespace jream; 

new Autoload('../jream'); 

這是所有的import jream.*所能意味着PHP,因爲PHP絕對沒有辦法確定如果一個類可能可能存在在某個命名空間中,除非你通知它。

+0

嘿謝謝你的回答,我喜歡關於設置命名空間的最後一部分! – JREAM

相關問題