在其他命名空间中使用多个类

Posted

技术标签:

【中文标题】在其他命名空间中使用多个类【英文标题】:Use multiple classes in other namespaces 【发布时间】:2011-02-06 02:33:54 【问题描述】:

如果我在命名空间 com\test 中有一些 php

并且想将它们全部导入另一个php文件怎么做?

use com\test\ClassA
use com\test\ClassB
...

use com\test\* 给我语法错误。

【问题讨论】:

【参考方案1】:

从 PHP 7.0 开始,从同一个命名空间导入的类、函数和常量可以组合在一个 use 语句中。

像这样:

use com\test\ClassA, ClassB;

$a = new ClassA;
$b = new ClassB;

【讨论】:

【参考方案2】:

这应该可行:

use com\test;

$a = new \test\ClassA;
$b = new \test\ClassB;

use com\test\ClassA as ClassA;
use com\test\ClassB as ClassB;

$a = new ClassA;
$b = new ClassB;

请参阅PHP manual on Using namespaces: Aliasing/Importing。

【讨论】:

很无聊!希望 PHP 开发者能加入这个功能。 同意。我意识到这是为了防止命名冲突,但老实说 - .NET、Java 和其他人多年来一直在这样做。抛出一个致命错误而不是强迫我们使用丑陋的语法有这么难吗? 第一个示例将引用命名空间 test 而不是 com\test 中的类,您必须删除开头的“\”才能使用别名 test【参考方案3】:

我认为你不能这样做。

你可以这样做:

 use com\test

并在以后将您的课程称为:

test\ClassA
test\ClassB

【讨论】:

以上是关于在其他命名空间中使用多个类的主要内容,如果未能解决你的问题,请参考以下文章

使用具有相同 ClassName 的其他命名空间扩展类

命名空间

是否可以在同一个文件中使用同一个命名空间下的多个类

WPF DataBinding 与其他命名空间/类

为啥要在命名空间中使用类

namespace 命名空间