我正在构建一个命名空间,它使用与我包含在命名空间中的类相同的类名。
require_once 'MyClass.php'; // already declares a class MyClass
namespace foo;
class MyClass {}
class MySubClass extends MyClass {}
如果没有"你不能重新声明类...",我将如何做到这一点?
首先,命名空间声明必须是第一个语句;当你这样做时,它将正常工作:
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
的别名。