【发布时间】:2010-12-06 04:03:29
【问题描述】:
我需要在 PHP 中有一个类构造函数调用其父级的 父级(祖父级?)构造函数而不调用父级构造函数。
// main class that everything inherits
class Grandpa
{
public function __construct()
{
}
}
class Papa extends Grandpa
{
public function __construct()
{
// call Grandpa's constructor
parent::__construct();
}
}
class Kiddo extends Papa
{
public function __construct()
{
// THIS IS WHERE I NEED TO CALL GRANDPA'S
// CONSTRUCTOR AND NOT PAPA'S
}
}
我知道这是一件很奇怪的事情,我正在尝试寻找一种不难闻的方法,但我很好奇这是否可能。
【问题讨论】:
-
你有什么理由不能在 Kiddo 的构造中实例化爷爷?
-
Grampa 构造函数为自己设置由其子代继承的属性。 Papa 在它的构造函数中做了一些会弄乱 Kiddo 的东西。所以我需要在构造过程中调用 Grandpa 构造函数来为 Kiddo 设置属性。
-
那么 Kiddo 不应该是从爷爷而不是爸爸延伸出来的。
-
@MitMaro。我同意,实际上我通过创建一个扩展 Grandpa 的中间类解决了我的实际问题。然后爸爸和孩子都延长了这门课。 Kiddo 需要 Papa 的一些中间功能,但不喜欢它的构造函数,因此该类具有该附加功能并且都对其进行了扩展。
-
完美的解决方案。您应该将其发布为答案。
标签: php class oop inheritance constructor