我正在尝试使用命名空间。我想在不同的命名空间内扩展一个类。该类的名称是相同的。例如:
父:
namespace Base;
class Section extends Skeleton {
protected $id;
protected $title;
protected $stylesheet;
}
子:
namespace Base2;
use \Base\Section;
class Section
extends \Base\Section {
}
这是一个使用Doctrine 2和Zend Framework的应用程序。 Base / Section使用的Skeleton类只是一个包含魔术方法的抽象类(__ get,_set等)。
当我尝试实例化\ Base2 \ Section类时,它会抛出一个错误:
Fatal error: Cannot declare class Base2\Section because the name is
already in use in /var/www/test/application/Models/Base2/Section.php
on line 7
有什么想法吗?
答案 0 :(得分:43)
只需使用完全限定名称
namespace Base2;
class Section
extends \Base\Section {
}
或别名
namespace Base2;
use \Base\Section as BSection;
class Section
extends BSection {
}
答案 1 :(得分:11)
当你说
时use \Base\Section
您将Section类拉入当前范围,当您想要创建名为Section的新类时,会导致冲突。只是省略use语句。