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;

... 省略 ...

おすすめcssジェネレーター


便利なcssジェネレーターをご紹介します。
三角形やグラデーションなどの、面倒なコードをさくっと生成してくれる頼もしい味方です。

■三角形「CSS triangle generator」

http://apps.eky.hk/css-triangle-generator/

頂点の向きと幅・高さ・色を設定するだけ。

■グラデーション「CSS Gradient」

https://cssgradient.io/

複雑な多色グラデーションも直感的なインターフェイスで簡単に作成できます。

■吹き出し「吹き出しデザインジェネレーター」

https://generator.web-alpha.info/fukidashi/

細かいところまで設定できる優れもの。

■border-radius「境界角丸作成ツール」

https://developer.mozilla.org/ja/docs/Web/CSS/CSS_Backgrounds_and_Borders/Border-radius_generator

変則的な角丸も作成できます。

■box-shadow「CSS3 Generator」

http://ds-overdesign.com/shadow/box-shadow.html

数値より見た目が重要なシャドウ作成には必須のジェネレーターです。

■アイコン「CSS ICON」

https://cssicon.space/#/icon/

最後はジェネレーターではありませんが、cssのみでアイコンを作成したいときに便利なサイトです。
アイコンを構成する各パーツのコードがひと目でわかるようになっており、勉強になります。