我可以在PHP中使用1个以上的类来扩展一个类吗?
如果我有几个类具有我需要的函数,但希望单独存储以进行组织,是否可以扩展一个类以同时具有这两个类?
即class a extends b extends c
编辑:我知道如何一次扩展一个类,但我正在寻找一种方法来立即使用多个基类扩展类 - AFAIK你不能在PHP中执行此操作,但应该有办法绕过它而不诉诸于,class c extends b
class b extends a
如果我有几个类具有我需要的函数,但希望单独存储以进行组织,是否可以扩展一个类以同时具有这两个类?
即class a extends b extends c
编辑:我知道如何一次扩展一个类,但我正在寻找一种方法来立即使用多个基类扩展类 - AFAIK你不能在PHP中执行此操作,但应该有办法绕过它而不诉诸于,class c extends b
class b extends a
如果你真的想在 PHP 5.3 中伪造多重继承,可以使用魔术函数 __call()。
这是丑陋的,尽管它从A类用户的角度来看是可行的:
class B {
public function method_from_b($s) {
echo $s;
}
}
class C {
public function method_from_c($s) {
echo $s;
}
}
class A extends B
{
private $c;
public function __construct()
{
$this->c = new C;
}
// fake "extends C" using magic function
public function __call($method, $args)
{
$this->c->$method($args[0]);
}
}
$a = new A;
$a->method_from_b("abc");
$a->method_from_c("def");
打印“abcdef”
不能有扩展两个基类的类。您不能拥有以下内容:
// this is NOT allowed (for all you google speeders)
Matron extends Nurse, HumanEntity
但是,您可以有如下层次结构...
Matron extends Nurse
Consultant extends Doctor
Nurse extends HumanEntity
Doctor extends HumanEntity
HumanEntity extends DatabaseTable
DatabaseTable extends AbstractTable
等等。