我正试图找到一种批量应用这些命名空间的方法,因为这样做不方便写出来。我知道我可以这么做,使用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 *;
?
任何提示将不胜感激:)
答案 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绝对无法确定某个类是否可能存在于某个命名空间中,除非您通知它。