PHPのTraitの使い所


今回はPHPでTrait(トレイト)を使う⽅法について解説します。

Traitとは?

まずはじめに、Traitとはどういうものかを公式サイトをもとに説明します。

PHP は、コードを再利⽤するための「トレイト」という仕組みを
実装しています。
トレイトは、PHP のような単⼀継承⾔語でコードを再利⽤するための仕組みのひとつです。 トレイトは、単⼀継承の制約を減らすために作られたもので、 いくつかのメソッド群を異なるクラス階層にある独⽴したクラスで再利⽤できるようにします。 トレイトとクラスを組み合わせた構⽂は複雑さを軽減させてくれ、 多重継承や Mixin に関連するありがちな問題を回避することもできます。
トレイトはクラスと似ていますが、トレイトは単にいくつかの機能をまとめるためだけのものです。 トレイト⾃⾝のインスタンスを作成することはできません。 昔ながらの継承に機能を加えて、振る舞いを⽔平⽅向で構成できるようになります。 つまり、継承しなくてもクラスのメンバーに追加できるようになります。

https://www.php.net/manual/ja/language.oop5.traits.php

機能(メソッド)を再利⽤できるようにまとめる仕組みです。

Traitの書き⽅

■定義⽅法

trait トレイト名 {
  function メソッド名1() {
    // 処理
  }
  function メソッド名2() {
    // 処理
  }
}

■利⽤⽅法

class クラス名 {
  use トレイト名;
}

■Laravelでの利⽤

Laravel内でもTraitは多く利⽤されており、会員登録やログイン周り・通知など、WEBサービスを構築する上でよく使う機能を予めまとめておくことで、コードが煩雑になるのを防ぎ、可読性が向上します。

<?php
namespace App\Http\Controllers\Auth;

use App\User;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;

class RegisterController extends Controller
{
  /*
  |--------------------------------------------------------------------------
  | Register Controller
  |--------------------------------------------------------------------------
  |
  | This controller handles the registration of new users as well as their
  | validation and creation. By default this controller uses a trait to
  | provide this functionality without requiring any additional code.
  |
  */
  use RegistersUsers;

... 省略 ...
カテゴリーPHP