PHP的類和物件 七 Trait

2021-07-23 07:27:51 字數 852 閱讀 6647

自 php 5.4.0 起,php 實現了一種**復用的方法,稱為 trait。

因為php是單繼承,當你需要多個區別的特性,就不得不去組合多個基類,trait出現後就避免了這些問題,trait的優勢就是可以隨意組合,而且**清晰。

trait不僅僅是可復用**段的集合,應該是一組描述了某個特性的

屬性與方法的集合。優點再於隨意組合,耦合性低,可讀性高。

優先順序是當前類的方法覆蓋了 trait 的方法,而trait 則覆蓋了被繼承的方法。

通過逗號分隔,在 use 宣告列出多個 trait,可以都插入到乙個類中。

如果引入的兩個trait有同名的方法,會產生衝突,可以使用insteadof操作符來指定使用衝突方法的哪乙個,也可以使用as將衝突方法起乙個別名。

使用 as 語法還可以用來調整方法的訪問控制。但是不會改變原版方法的訪問控制。

trait也可以使用trait,同時也像類一樣可以定義抽象方法,屬性,靜態屬性,靜態方法。不過如果trait定義了乙個屬性,使用trait的類中就不能定義同名的屬性,也不能修改這個屬性。

其實trait更像是方法的集合,其內的屬性更像是為了其中的方法服務的。

traits不是類,不能被例項化。

trait也類似於include和require匯入檔案。

常用trait和特殊類

scala中沒有列舉型別,如果要實線列舉型別可以讓乙個物件extends enumeration。例如 object weekday extends enumeration import weekday.def isworkingday d weekday d sat d sun weekday.v...

PHP類和物件

php中用class來定義類,用new例項化物件,用extends繼承類,不過只能單繼承,屬性和方法有public private和protected做訪問控制,預設為public,在類裡定義常量不需要 用 範圍解析符可以呼叫父類的方法,訪問類的靜態變數 靜態方法和常量。範圍解析操作符 也可稱作 p...

PHP類和物件

php類和物件 類是物件導向程式設計的基本概念,通俗的理解類就是對現實中某乙個種類的東西的抽象,比如汽車可以抽象為乙個類,汽車擁有名字 輪胎 速度 重量等屬性,可以有換擋 前進 後退等操作方法。通常定義乙個汽車類的方法為 class car 物件通過new關鍵字進行例項化 car new car e...