温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - Can I extend a class using more than 1 class in PHP?
class oop php extends

其他 - 我可以在PHP中使用多个类来扩展一个类吗?

发布于 2020-03-27 16:18:26

如果我有几个具有所需功能的类,但想单独存储以进行组织,我可以扩展一个类以同时拥有这两个类吗?

class a extends b extends c

编辑:我知道一次一次扩展一个类,但是我正在寻找一种使用多个基类立即扩展一个类的方法-AFAIK,您不能在PHP中做到这一点,但是应该有一些方法可以不使用class c extends bclass b extends a

查看更多

查看更多

提问者
atomicharri
被浏览
72
Franck 2008-12-10 23:25

回答您的编辑:

如果您确实想伪造多重继承,则可以使用魔术函数__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”