如何在非空间类中使用名称空间?

时间:2014-04-24 11:26:36

标签: php

有没有办法在非命名空间类中使用命名空间类?

示例:

// Note class A and B have no namespaces...
class A extends B {

 public function do() {
   $obj = new My\Namespace\SomeObject();
   return $obj;
 }

}

谢谢。

2 个答案:

答案 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();

注意前导反斜杠。

修改

仔细观察后,我想提出其他一些观点:

  1. 根据@ hakre的评论 - 如果你在全局命名空间(这是默认/隐式命名空间,因为实际上没有非命名空间)那么你需要一个领先反斜杠。

  2. 使用Namespace是一个语法错误,因为它是一个保留字(在PHP中无关紧要,因为许多关键字包括类,方法和函数名称都不区分大小写)。

    < / LI>
  3. 使用do是语法错误,因为它也是保留字(do/while控制结构)。

答案 1 :(得分:1)

您应该添加全局前缀运算符以完成限定名称完全限定名称

$obj = new \My\Namespace\SomeObject();