我可以使用PHP中的多个类扩展类吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (16)

如果我有几个具有我需要的函数的类,但我想单独存储以便组织,我可以扩展一个类来同时拥有这两个类吗?

E.class a extends b extends c

提问于
用户回答回答于

如果你真的想伪造多重继承,你可以使用magic函数__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

诸若此类

扫码关注云+社区