首頁 > 後端開發 > PHP問題 > php能繼承多個父類別嗎

php能繼承多個父類別嗎

(*-*)浩
發布: 2023-02-25 11:40:01
原創
4742 人瀏覽過

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中文網其他相關文章!

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板