一千萬個為什麽

搜索

我可以在PHP中使用多於一個類來擴展一個類嗎?

如果我有幾個功能需要的類但需要單獨存儲用於組織,我可以擴展一個類來兼有嗎?

i.e. class a extends b extends c

edit: I know how to extend classes one at a time, but I'm looking for a method to instantly extend a class using multiple base classes - AFAIK you can't do this in PHP but there should be ways around it without resorting to class c extends b, class b extends a

最佳答案

回答你的編輯:

如果你真的想偽造多重繼承,你可以使用魔術函數__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”

轉載註明原文: 我可以在PHP中使用多於一個類來擴展一個類嗎?