7

我正在尝试找到一种方法来大规模应用这些命名空间,因为这样写出来会很不方便。我知道我可以简单地使用,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 *;

任何提示将不胜感激:)

4

2 回答 2

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;
于 2012-05-15T02:53:33.533 回答
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');

这就是 PHP 的全部import jream.*含义,因为 PHP 绝对无法确定一个类是否可能存在于某个命名空间中,除非您通知它。

于 2012-05-15T03:59:07.050 回答