首頁  >  文章  >  後端開發  >  php能繼承多個父類別嗎

php能繼承多個父類別嗎

(*-*)浩
(*-*)浩原創
2019-09-28 11:21:244716瀏覽

PHP沒有多繼承的特性。 即使是一門支援多重繼承的程式語言,我們也很少會使用這個特性。在多數人看來,多繼承不是好的設計方法。

php能繼承多個父類別嗎

但是開發中用到多繼承​​該怎麼辦呢?

下面介紹一下使用trait來實作php中多繼承的問題。 (推薦學習:PHP影片教學

自PHP5.4開始,php實作了程式碼重複使用的方法trait語法。

Trait是為PHP的單繼承語言而準備的一種程式碼重複使用機制。為了減少單一繼承的限制,是發展在不同結構層次上去複用method,Trait 和Class 組合的語意定義了一種減少複雜性的方式,避免傳統多繼承和Mixin 類別相關典型問題。

需要注意的是,从基类继承的成员会被 trait 插入的成员所覆盖。优先顺序是来自当前类的成员覆盖了 trait 的方法,而 trait 则覆盖了被继承的方法。

先來個範例:

trait TestOne{

    public function test()
    {
        echo "This is trait one <br/>";
    }

}

trait TestTwo{

    public function test()
    {
        echo "This is trait two <br/>";
    }


    public function testTwoDemo()
    {
        echo "This is trait two_1";
    }

}

class BasicTest{

    public function test(){
        echo "hello world\n";
    }

}


class MyCode extends BasicTest{

    //如果单纯的直接引入,两个类中出现相同的方法php会报出错
    //Trait method test has not been applied, because there are collisions with other trait 
    //methods on MyCode 
    //use TestOne,TestTwo;
    //怎么处理上面所出现的错误呢,我们只需使用insteadof关键字来解决方法的冲突
    use TestOne,TestTwo{
        TestTwo::test insteadof TestOne;
    }

}


$test = new MyCode();
$test->test();
$test->testTwoDemo();

運行結果:

This is trait two 
This is trait two_1

以上是php能繼承多個父類別嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn