2015-09-14
PHP는 단일상속만 지원한다. 그래서 여러개의 class 자원을 사용하고 싶을 경우에는 아래와 같은 편법이 있다. 일단 예제를 보자
class AA
{
    public $a = 'aaa<br>';

    public function __construct()
    {
        $this->print_a();
    }

    public function print_a()
    {
        echo 'haha~ aa<br>';
    }
}

class BB
{
    public $a = 'bbb<br>';

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

class CC
{
    public $a = 'ccc<br>';
}

class DD 
{
    public $aa, $bb, $cc;

    public function __construct()
    {
        $this->aa = new AA();
        $this->bb = new BB();
        $this->cc = new CC();

    }

}

class EE extends DD
{
    public function __construct()
    {
        DD::__construct();
// parent::__construct();

        echo $this->aa->a;
        echo $this->bb->a;
        echo $this->cc->a;
    }
}

$ee = new EE;
haha~ aa
bbb
aaa
bbb
ccc

간단히 설명하자면,
여러개의 AA,BB,CC class를 만든후에, DD class의 생성자 부분에서 해당 class들을 전부 선언해 놓는다.
그리고 EE class에서 DD를 상속받은후에 DD class의 생성자를 사용하면 EE 클래스에서는 AA, BB, CC, DD class의 자원을 모두 사용 가능하게 된다.