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