命名空间类名称包含冲突

时间:2014-04-04 05:35:19

标签: php

我正在构建一个命名空间,该命名空间使用与我在命名空间中包含的类相同的类名。

require_once 'MyClass.php'; // already declares a class MyClass

namespace foo;

class MyClass {}
class MySubClass extends MyClass {}

如果没有获得&#34,我将如何做到这一点?你不能重新宣布课程......"?

1 个答案:

答案 0 :(得分:1)

首先,名称空间声明必须是第一个语句;当你这样做时,它会起作用:

namespace foo;

require_once 'MyClass.php'; // already declares a class MyClass

class MyClass {}
class MySubClass extends MyClass {}

现在,\MyClass引用您在MyClass.php中声明的类(假设它是在没有特定命名空间的情况下声明的),而MyClass是指当前命名空间内的类。

或者,您可以使用别名:

namespace foo;

use MyClass as StdMyClass;

require_once 'MyClass.php'; // already declares a class MyClass

class MyClass {}
class MySubClass extends MyClass {}

在这种情况下,StdMyClass可以被视为\MyClass的别名。