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

Php 使用具有相同类名的其他命名空间扩展类,php,namespaces,Php,Namespaces,我正在尝试使用名称空间。我想在不同的名称空间中扩展一个类。类的名称相同。例如: 家长: namespace Base; class Section extends Skeleton { protected $id; protected $title; protected $stylesheet; } 儿童: namespace Base2; use \Base\Section; class Section extends \Base\Section { } 它是一个使用

我正在尝试使用名称空间。我想在不同的名称空间中扩展一个类。类的名称相同。例如:

家长:

namespace Base;

class Section extends Skeleton {

protected $id;

protected $title;

protected $stylesheet;
}
儿童:

namespace Base2;
use \Base\Section;

class Section 
    extends \Base\Section {

}
它是一个使用条令2和Zend框架的应用程序。Base/Section使用的骨架类只是一个抽象类,它包含神奇的方法(uuu 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

有什么想法吗?

只要使用完全限定的名称即可

namespace Base2;

class Section 
    extends \Base\Section {
}
或别名

namespace Base2;
use \Base\Section as BSection;

class Section 
    extends BSection {
}
当你说

use \Base\Section

您正在将Section类拉入当前作用域中,当您要创建名为Section的新类时,会导致冲突。省略use语句。

有这样的命名方案不是有点混乱吗?是的,但它不是真正的命名方案。只有部分是真实的。名称空间只是随机的。@Rene:你确定它们不是任意的吗?对,类名和名称可能会混淆。每次我看到这种类型的代码,我都需要考虑一下。