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:你确定它们不是任意的吗?对,类名和名称可能会混淆。每次我看到这种类型的代码,我都需要考虑一下。