在PHP中模拟多重继承

Ric*_*doE 1 php multiple-inheritance

假设我有2个班级

Class A {
    public function doA(){
        echo "Im A";
    }
}
Class B {
    public function doB(){
        echo "Im B";
    }
}
Run Code Online (Sandbox Code Playgroud)

编写C类,以便运行以下代码:

  $c = new C();
  $c->doA();
  $c->doB();
Run Code Online (Sandbox Code Playgroud)

和输出:

>> Im A
>> Im B
Run Code Online (Sandbox Code Playgroud)

这是一个测试,其中的条件:

  • 不使用静态调用
  • 你不能修改A类或B类

所以我写道:

Class C {

       public function doA() {
             $a = new A();
             $a->doA();
       }

       public function doB() {
             $b = new B();
             $b->doB();
       }

  }
Run Code Online (Sandbox Code Playgroud)

显然我错了,因为它可以"更优化"

谁能告诉我怎么做?

rid*_*rid 5

您可以保留实例,AB不是每次实例化它们.

class C {
       private $a, $b;

       public __construct() {
             $this->a = new A();
             $this->b = new B();
       }

       public function doA() {
             $this->a->doA();
       }

       public function doB() {
             $this->b->doB();
       }
}
Run Code Online (Sandbox Code Playgroud)