本文參考: http://php.net/language.oop5.traits php
1、什麼是traitoop
從PHP 5.4.0 開始 PHP 實現了一種新的代碼複用方式 trait。spa
2、trait解決了什麼問題.net
trait 的出現是爲了解決相似PHP的單繼承語言而準備的一種代碼複用機制,讓開發人員可以在不能層次結構內獨立的類中複用 method。3d
3、跟其它語言相比,trait 有什麼 好處code
Trait 和 Class 組合的語義定義了一種減小複雜性的方式,避免傳統多繼承和 Mixin 類相關典型問題。blog
4、該如何使用trait繼承
1ip 2ci 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
|
上面的代碼會輸出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
上面的代碼會輸出:
若是兩個 trait 都插入了一個同名的方法,若是沒有明確解決衝突將會產生一個致命錯誤。
爲了解決多個 trait 在同一個類中的命名衝突,須要使用 insteadof 操做符來明確指定使用衝突方法中的哪個。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
上面例子會輸出:
除了這些特性,trait 還包括 抽象成員 靜態成員 靜態方法 屬性 等特性,能夠參考 http://php.net/language.oop5.traits