トレイト
基本
バージョン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
>
別機能
最終更新:2012年11月24日 23:57