このページについて
このページではphpで使う事ができるトレイトの機能と、基本的な使い方を解説しています。コードを再利用したい場合に便利です。
トレイト
トレイトはphpで使う事ができる機能というか特性の1つです。このトレイトはPHPの継承のある部分を解消するのに非常に役立ちます。
そもそもPHPのみならず、プログラミング言語には継承という機能が備わっている事が多いです。この継承はクラスが別のクラスの中身を全て引き継ぐ事ができるという機能です。PHPにも実装されているんですが、PHPの継承は1度に1つしか継承する事ができません。
クラスAの機能を全て引き継ぐ場合はクラスAを継承すればOKです。しかしクラスAとクラスBの両方の機能を全て引き継ぐ場合、一旦クラスAを引き継いだクラスBを作り、そのクラスBを引き継ぐという手順が必要になります。
トレイトはそのような継承に次ぐ継承をせずとも、トレイトで定義したコードを好きなタイミングでクラス内で再利用できます。疑似的な継承っぽい事を可能にしているわけです。
トレイトの書き方
トレイトは以下のように書きます。
trait トレイト名{
function 関数名() {
処理内容
}
function 関数名2(){
処理内容
}
}
トレイトは何個書いてもOKですし、インターフェイスとは違ってトレイトの定義と同時に処理内容を書きます。
そしてインターフェイスとは違い、必要な関数だけをその都度使う事ができるという点もあります。インターフェイスは抽象メソッドを書き、クラスでそれぞれ処理内容を書くという使い方でした。そしてすべてのインターフェイスを書かなければならないという点もあります。トレイトにはそのような制限はありません。
トレイトの呼び出し方
トレイトを定義したら、次は実際に呼び出す方法です。トレイトは以下の書き方でOKです。
class クラス名 {
use トレイト名;
//ここから関数なり変数なり、クラスの中身
}
見ての通り、useと書いてトレイト名を書くだけでOKとなります。これでトレイト名の中にある関数を自由に扱えるようになります。
あとはクラスのインスタンスを作成し、トレイトの中で定義した関数名を呼び出すだけでOKです。この辺りの詳しい書き方は下のトレイトの例を参考にしてみてください。
トレイトの例
実際にトレイトを使ったのがこちらになります。
画像はまずtestTraitsという名前のトレイトを作成し、testClassでトレイトを使用しています。(use)
その後、インスタンスを作成してトレイト内で定義したtraitsAを呼び出しています。このtraitsAの中身は見ての通りシンプルな出力内容です。ちゃんと表示されていることが確認できますね。
トレイトのメリット
トレイトの使い方などを見てきて、何が良いの?って思うかもしれないので個人的なメリットを紹介。
- コードの再利用
- これに尽きると思います。わざわざクラスを継承したクラスを継承して云々っていう面倒な手順を踏まずとも、トレイトに出番の多そうな関数をあらかじめ書いておき、必要に応じてその関数を呼び出す。わざわざ継承することもなくいろんなところで共通のコードが使えるというのはかなり便利です。
- 管理のしやすさ
- トレイトは性質上、1箇所に複数の関数がまとまっていることになります。なので必要に応じて関数を書き直す時も複数のクラスの関数を書き換える必要がなく、トレイトの中身だけを修正すれば他のすべてのクラスにも変更が適用されます。これも便利。
この2つが個人的には大きいですね。継承に次ぐ継承をしても良いことは良いんですが、トレイトの方が圧倒的に便利で手軽です。
まとめ
トレイトはPHPの継承の不便なところを解消するとても便利な仕組みです。コードを使いたいがために別のクラスを一旦作る必要もなく、トレイトを使うことで解決します。
- phpの基礎
- phpとは?JavaScriptとの違いは?みたいなことから、基本の書き方などを解説。
- echoとprint
- 画面に文字を出力する2種類の言語構造の使い方
- 変数
- phpで使える変数の扱い方などを解説しています。
- 変数のスコープ(有効範囲)
- 変数のスコープについての解説です。
- var_dump
- 変数の情報を見ることができる関数
- print_r
- 変数の情報をわかりやすい形式で表示する関数
- 配列と連想配列
- 配列と連想配列の書き方と、便利な関数の解説など。
- key
- 連想配列のキーを返してくれます。内部ポインタ関係あり。
- count
- 配列や連想配列の要素数を数えてくれる関数の使い方解説。
- ソート関数
- 配列に対してソートを行う関数の中から、代表的な5つの使い方解説です。
- array_reverse
- 配列の中身の順番を反転させる関数です。
- array_chunk
- 配列を指定した数で分割させるarray_chunk関数の使い方解説です。
- array_combine
- 2つの配列を足して1つの連想配列にする関数です。
- array_diff
- 2つの配列を比較して、存在しない値を出力する関数
- array_push
- 配列に対して後方に要素を追加する関数
- array_unshift
- 配列に対して先頭に要素を追加する関数。
- array_shift
- 配列の先頭の要素を取り出す関数。
- array_merge
- 複数の配列を統合して1次元の配列にする関数
- array_intersect
- 2つの配列を比較して、両方に共通するものを出力する関数
- include
- includeを使って別のphpファイルを読み込む方法の解説。
- if文
- if文を使って処理を変更させる方法の解説。
- switch文
- switch文を使って複数の処理分岐を行わせたい時に使います。
- forループ
- forループを使って同じ処理を行わせる方法の解説です。
- whileループ
- whileループを使って同じ処理を行わせる方法の解説と注意点。
- do-whileループ
- do-whileループを使って同じ処理を行わせる方法の解説です。
- foreachループ
- foreachループを使って配列内のアイテム全てに処理を行う方法の解説です。
- continue
- ループ処理の残りをスキップしつつ、ループの先頭に戻る制御構造
- ループのネスト構造(入れ子)
- ループの中にループを入れる書き方や考え方の解説。
- function
- functionを使って自作の関数を作成・使用する方法の解説。
- 引数の種類と書き方解説
- functionで扱う引数の種類と書き方を解説
- return
- returnの使い方と関数での使い方解説。
- class
- classを作成して変数と関数を1つにまとめる方法と使い方の解説。
- constructとdestruct
- classのインスタンス作成と同時に処理を行うconstructと、スクリプトの終了と同時に実行するdestructの解説です。
- インターフェイス
- インターフェイスという用語の解説と、実際の使い方解説
- トレイト
- コードを再利用するのに便利なトレイトの解説です。
- 列挙型
- プログラム中で使う変数名をあらかじめ定義しておく。そんな感じの型。
- PDOを使ってMySQLへ接続
- PDOを使ってMySQLへ接続し、データを取得する方法の解説です。
- データの加工と表示
- PDOでデータベースから取得したデータを加工して表示する方法の解説です。
- HTMLフォームのデータ受け取りと表示
- HTMLで作ったフォームからのデータの受け取り方法と、その表示方法の解説です。