php實現多繼承-trait語法


自 PHP 5.4.0 起,PHP 實現了一種代碼復用的方法,稱為 trait。

Trait 是為類似 PHP 的單繼承語言而准備的一種代碼復用機制。Trait 為了減少單繼承語言的限制,使開發人員能夠自由地在不同層次結構內獨立的類中復用 method。Trait 和 Class 組合的語義定義了一種減少復雜性的方式,避免傳統多繼承和 Mixin 類相關典型問題。

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

從基類繼承的成員會被 trait 插入的成員所覆蓋。優先順序是來自當前類的成員覆蓋了 trait 的方法,而 trait 則覆蓋了被繼承的方法。

以下為代碼:

trait traitTestOne{
	public function test(){
		echo "This is trait one <br/>";
	}
	public function testOne(){
		echo "one <br/>";
	}
}

trait traitTestTwo{
// 	public function test(){
// 		echo "This is trait two";
// 	}
	public function testTwo(){
		echo "two <br/>";
	}
}

class basicTest{
	public function test(){
		echo "hello world\n";
	}
}
class myCode extends basicTest{
	use traitTestOne,traitTestTwo;
}

$test = new mycode();
$test->test();
$test->testOne();
$test->testTwo();

  輸出為:

This is trait one
one
two

  注意。如果把注釋一行的注釋取消,將會報錯

Fatal error: Trait method test has not been applied, because there are collisions with other trait methods on myCode in ......test.php on line 28

是致命錯誤。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM