PHP中的Trait 特性及作用

2022-10-06 09:33:13 字數 2254 閱讀 5289

自 php 5.4.0 起,php 實現了**復用的乙個方法,稱為 traits。

traits 是一種為類似 php 的單繼承語言而準備的**復用機制。trait 為了減少單繼承語言的限制,使開發人員能夠自由地在不同層次結構內獨立的類中復用方法集。traits 和類組合的語義是定義了一種方式來減少複雜性,避免傳統多繼承和混入類(mixin)相關的典型問題。

trait 和乙個類相似,但僅僅旨在用細粒度和一致的方式來組合功能。trait 不能通過它自身來例項化。它為傳統繼承增加了水平特性的組合;也就是說,應用類的成員不需要繼承。

trait是在php5.4中加入的,它既不是介面也不是類。主要是為了解決單繼承語言的限制。是php多重繼承的一種解決方案。例如,需要同時繼承兩個 dotasghmqabstract class, 這將會是件很麻煩的事情,trait 就是為了解決這個問題。它能被加入到乙個或多個dotasghmq已經存在的類中。它宣告了類能做什麼(表明了其介面特性),同時也包含了具體dotasghmq實現(表明了其類特性)

簡單使用

首先,當然是宣告個 trait,php5.4 增加了 trait 關鍵字

trait first_trait

function second_method()

}同時,如果要在 class 中使用該 trait,那麼使用 use 關鍵字

class first_class

$obj = new first_class();

// executing the method from trait

$obj->first_method(); // valid

$obj->second_method(); // valid

使用多個 trait

在同個 class 中可以使用多個 trait

trait first_trait

}trait second_trait

}class first_class

$obj= new first_class();

// valid

$obj->first_method(); // print : method

// valid

$obj->second_method(); // print : method

trait 之間的巢狀

同時,trait 之間也可以相互dotasghmq的巢狀,例如

trait first_trait

}trait second_trait

}class first_class

$obj= new first_class();

// valid

$obj->first_method(); // print : method

// valid

$obj->second_method(); // print : method

trait 的抽象方法(abstract method)

我們可以在 trait 中宣告需要實現的抽象方法,這樣能使使用它的 class 必須實現它

trait first_trait

// 這裡可以加入修飾符,說明呼叫類必須實現它

abstract public function second_method();

}class first_method

}trait 衝突

多個 trait 之間同時使用難免會衝突,這需要我們去解決。php5.4 從語法方面帶入了相關 的關鍵字語法:insteadof 以及 as ,用法參見

trait first_trait

}trait second_trait

}class first_class

} $obj = new first_class();

// output: from first trait

$obj->first_function();

上面就是些 trait 比較基本的使用了,更詳細的可以參考官方手冊。這裡總結下注意的幾 點:

trait 會覆蓋呼叫類繼承的父類方法

trai 無法如 class 一樣使用 new 例項化

單個 trait 可由多個 trait 組成

在單個 class 中,可以使用多個 trait

trait 支援修飾詞(modifiers),例如 final、static、abstract

我們能使用 insteadof 以及 as 操作符解決 trait 之間的衝突

本文標題: php中的trait 特性及作用

本文位址:

PHP 特性之 trait 二

前面我們介紹了trait的基本使用,下面來介紹下trait比較複雜的用法使用多個traittrait member trait admin class showmember member new showmember member info member show 直接使用,逗號隔開,以上程式將會輸...

PHP中trait使用方法

1.php中使用trait關鍵字是為了解決乙個類既想整合基類的屬性和方法,又想擁有別的基類的方法,而trait一般情況下是和use搭配使用的。trait drive n class person class student extends person student new student stu...

PHP中trait使用方法詳細介紹

說通俗點,php中使用trait關鍵字是為了解決乙個類既想整合基類的屬性和方法,又想擁有別的基類的方法,而trait一般情況下是和use搭配使用的。carname n class person class student extends person student new student stud...