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)
空无一人.在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)