我正在构建一个命名空间,该命名空间使用与我在命名空间中包含的类相同的类名。
require_once 'MyClass.php'; // already declares a class MyClass
namespace foo;
class MyClass {}
class MySubClass extends MyClass {}
如果没有获得&#34,我将如何做到这一点?你不能重新宣布课程......"?
答案 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
的别名。