PHP名称空间:相当于c#使用


PHP namespaces: equivalent to C# using

要使该命名空间的所有类在当前文件中可用,与c#的using Name.Space;语句等效的是什么?这在PHP中可能吗?

我想要的(但不工作):

<?php
# myclass.php
namespace Namespace;
class myclass {
}
?>
<?php
# main.php
include 'myclass.php'
use Namespace;
new myclass();
?>

无。在PHP中,解释器不会知道可能存在的所有类(特别是由于__autolload的存在),因此运行时将遇到许多冲突。像这样:

use Foo'*; // Invalid code
throw new Exception();

可能有一个Foo'Exception,它应该是__autoload - ed - PHP无法知道。

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

use Foo'Bar;
$o = new Bar'Baz(); // Is Foo'Bar'Baz

或带别名:

use Foo'Bar as B;
$o = new B'Baz(); // Is Foo'Bar'Baz

正如johannes所解释的,或者您可以将您的类别名

声明:

namespace myNamespace;
class myClass {
    public function __toString()
    {
        return "Hello world!";
    }
}
执行:

include 'namespace.class.php';
use myNamespace'myClass as myClass;
echo new myClass();