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」 と表示されます。
やってみると意外と簡単かつ、いろいろ使えそうな機能ですね。