php – 藉由安插特徵 (trait) 來修改父類別 (class) 的方法

當原有的程式碼 class My 繼承 class Base 的時候,若要改變已存在 class Base 的方法,可以藉由安插 trait 的方式,來修改 Base 的原有方法。

我們在 class My 中添加了

那麼 trait 的 Action::hello() 會覆蓋 class 的 Base::hello() 。如果在trait 的 Action::Hello() 要呼叫 class 的 Bass::Hello(),可以藉由

來達到。這是因為 class My 繼承了 class Bass,中間安插了 trait Action。所以關係上來說是

class Base -> trait Action -> class My

trait Action 的 parent 自然會是 class Base。

php – 使用特徵 trait 定義屬性

直接在 trait 裡面定義即可,寫法如同 class 一樣。

但如果 class 中也定義了 trait 已有的屬性,且屬性質相異,那就會發生錯誤。

 

php – trait 靜態寫法

透過 static 的關鍵字,就可以將特徵的方法,定義為靜態方法,這樣即可由類別直接呼叫。

 

php – 使用 trait 定義抽象方法

 

php – 修改原有的特徵 trait 可否被造訪 (public/protected/private)

因為被修改為 protected 所以不可被外部訪問

因為建立了私有別名,所以 sayHello() 仍然可以被訪問;myPrivateHello() 則不行。