使用具有相同ClassName的其他命名空间扩展类

Ren*_*gen 24 php namespaces

我正在尝试使用名称空间.我想在不同的命名空间内扩展一个类.该类的名称是相同的.例:

家长:

namespace Base;

class Section extends Skeleton {

protected $id;

protected $title;

protected $stylesheet;
}
Run Code Online (Sandbox Code Playgroud)

儿童:

namespace Base2;
use \Base\Section;

class Section 
    extends \Base\Section {

}
Run Code Online (Sandbox Code Playgroud)

它是一个使用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
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Mch*_*chl 44

只需使用完全限定名称

namespace Base2;

class Section 
    extends \Base\Section {
}
Run Code Online (Sandbox Code Playgroud)

或别名

namespace Base2;
use \Base\Section as BSection;

class Section 
    extends BSection {
}
Run Code Online (Sandbox Code Playgroud)


Sco*_* M. 11

当你说

use \Base\Section
Run Code Online (Sandbox Code Playgroud)

您正在将Section类拉入当前范围,当您想要创建名为Section的新类时会导致冲突.只是省略use语句.