【php】trait を使おう

php 5.4 以降、 trait という機能が php には追加されてますが(php 7 でももちろん使えます)、

あまり見ないので、ちょっち作成してみました。

たぶん第二弾もやるかも。

第二弾 → https://hacknote.jp/archives/24585/

※確認:php7


trait とは

マニュアルをどうぞ。

http://php.net/manual/ja/language.oop5.traits.php

機能をまとめておいて、いろんな class で使いまわそう、というものだそうです。

実装してみる

実際に動かしてみました。

<?php
/**
 * こんな感じで class みたいに作ります。
 */
trait test_a
{
    public function test_a_1()
    {
        echo "a" ;
    }
}

trait test_b
{
    public function test_b_1()
    {
        echo "b" ;
    }
}

マニュアルに書いてある通り、

トレイト自身のインスタンスを作成することはできません。

なので、↓みたいにするとエラーになります。

$trait = new test_a() ; // Fatal error: Cannot instantiate trait test_a (インスタンス化できないよ!)

使うときは以下のように。

class test
{
    /** 使う trait を宣言する */
    use test_a, test_b ;
}

$class = new test() ;

/**
 * test_a, test_b を use してるのでそいつらの function も使える
 */
$class->test_a_1() ;
$class->test_b_1() ;
// 結果は画面に「ab」 と表示されます。

やってみると意外と簡単かつ、いろいろ使えそうな機能ですね。