有没有办法在非命名空间类中使用命名空间类?
示例:
// Note class A and B have no namespaces...
class A extends B {
public function do() {
$obj = new My\Namespace\SomeObject();
return $obj;
}
}
谢谢。
答案 0 :(得分:2)
只需使用use
运算符:
<?php
use My\Namespace\SomeObject;
class A extends B
{
public function do()
{
$obj = new SomeObject();
return $obj;
}
}
或者您可以使用完全限定名称,例如:
$obj = new \My\Namespace\SomeObject();
注意前导反斜杠。
修改强>
仔细观察后,我想提出其他一些观点:
根据@ hakre的评论 - 如果你在全局命名空间(这是默认/隐式命名空间,因为实际上没有非命名空间)那么你不需要一个领先反斜杠。
使用Namespace
是一个语法错误,因为它是一个保留字(在PHP中无关紧要,因为许多关键字包括类,方法和函数名称都不区分大小写)。
使用do
是语法错误,因为它也是保留字(do/while
控制结构)。
答案 1 :(得分:1)
您应该添加全局前缀运算符以完成限定名称到完全限定名称:
$obj = new \My\Namespace\SomeObject();