PHP Trait

jiazhuamh發表於2017-05-06

Trait和Class類似,提供一種程式碼複用機制。無法透過Trait自身來例項化,它為傳統繼承增加了水平特性的組合。例如:

trait A
{
    protected function fa () {
        // TODO
    }
}

class B
{
    // TODO
}

class C extends B
{
    use A;
}
  1. 從基類繼承的成員會被 trait 插入的成員所覆蓋。優先順序是來自當前類的成員覆蓋了 trait 的方法,而 trait 則覆蓋了被繼承的方法。
  2. 透過逗號分隔,在 use 宣告列出多個 trait,可以都插入到一個類中。
  3. 為了解決多個 trait 在同一個類中的命名衝突,需要使用 insteadof 運算子來明確指定使用衝突方法中的哪一個。
  4. as 運算子可以 為某個方法引入別名。 注意,as 運算子不會對方法進行重新命名,也不會影響其方法。
  5. 正如 class 能夠使用 trait 一樣,其它 trait 也能夠使用 trait。在 trait 定義時透過使用一個或多個 trait,能夠組合其它 trait 中的部分或全部成員。
  6. Trait 定義了一個屬性後,類就不能定義同樣名稱的屬性,否則會產生 fatal error。 有種情況例外:屬性是相容的(同樣的訪問可見度、初始預設值)。
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章