这是否有一个PHP命名空间的快捷方式?

问题描述:

我试图找到一种方法来批量应用这些命名空间,因为这将不方便写出来。我知道我可以简单地做,使用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 *;

任何提示,将不胜感激:)

至少,你可以跳过所有冗余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

是不是有办法沿着这些方向说话: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