アットウィキロゴ

トレイト

基本

バージョン5.4以降で使用可能

クラスの多重継承と解消するためにつくられた機能

基底クラスよりも優先順位が高い

1つのクラスにuse文を使用して、複数のトレイトを設定可能

insteadof演算子により衝突するメソッドを優先させることが可能

as演算子によりメソッド名を変更させることが可能

複数のトレイトを1つのトレイトにまとめることが可能

抽象メソッドを含めることも可能

静的なメンバーは使用不可、静的なメソッドは使用可能

プロパティも定義できるが衝突した場合はエラーが発生


サンプル

<?php
	/********************************
	 * トレイトの確認
	 ********************************/
 
	// トレイトの定義
	trait TestTrait01{
		// トレイト内部でメソッドの定義
		public function test01(){
			echo " traitTest ";
		}
	}
 
	// トレイトの定義
	trait TestTrait02{
		// トレイト内部でメソッドの定義
		public function test02(){
			echo " traitTest2 ";
		}
	}
 
	// クラスの定義
	class TestClass01{
		use TestTrait01, TestTrait02;
 
		public function test03(){
			$this->test01();
			$this->test02();
			echo " classTest ";
		}
	}
 
	/*******************************
	 * クラスを生成して実行
	 *******************************/
	$obj = new TestClass01();
	$obj->test03();
 
 
 
 

サンプル結果

>php -f sample01.php
 traitTest  traitTest2  classTest
>
 


別機能

トレイトの優先順位

複数のトレイト

アクセスレベルの変更(public→private)

トレイトを組み合わせて1つのトレイトする

トレイトで抽象メソッドの定義

トレイトで静的メソッドの定義

トレイトでプロパティの定義



最終更新:2012年11月24日 23:57