是否有PHP命名空间快捷方式?

时间:2012-05-15 02:10:56

标签: php namespaces

我正试图找到一种批量应用这些命名空间的方法,因为这样做不方便写出来。我知道我可以这么做,使用jream\ as j,但我想看看是否可以避免反斜杠。

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 *;

任何提示将不胜感激:)

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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绝对无法确定某个类是否可能存在于某个命名空间中,除非您通知它。