PHP命名空间:相当于C#使用

kni*_*ttl 6 php oop namespaces php-5.3

C#的using Name.Space;语句相当于在当前文件中使该命名空间的所有类都可用?这甚至可以用PHP吗?

我想要什么(但不起作用):

<?php
# myclass.php
namespace Namespace;
class myclass {
}
?>

<?php
# main.php
include 'myclass.php'
use Namespace;

new myclass();
?>
Run Code Online (Sandbox Code Playgroud)

joh*_*nes 8

空无一人.在PHP中,解释器不会知道可能存在的所有类(特别是由于__autoload的存在),因此运行时会遇到许多冲突.有这样的事情:

use Foo\*; // Invalid code
throw new Exception();
Run Code Online (Sandbox Code Playgroud)

可能有一些应该__autoload编辑的Foo\Exception - PHP无法知道.

您可以做的是导入子命名空间:

use Foo\Bar;
$o = new Bar\Baz(); // Is Foo\Bar\Baz
Run Code Online (Sandbox Code Playgroud)

或者使用别名:

use Foo\Bar as B;
$o = new B\Baz(); // Is Foo\Bar\Baz
Run Code Online (Sandbox Code Playgroud)