スマレジエンジニアyushiのブログ

スマレジエンジニアのブログ

TraitとHelpersの使い分けを

こんにちは、株式会社スマレジのエンジニアのyushiです。

今日は、TraitとHelperの使い分けを考えます。
 

TraitとHelpers

PHPやLaravelで開発していると、関数単位で機能を共通化したくなるときがあります。

このときに使えるのがTraitHelpersという仕組みです。

この使い分けを考えます。

 

Traitとは

これはPHPの標準の仕組みです。

クラスのように、trait {TraitName}と共有したいメソッドを定義します。

あとは各クラス内でuse {TraitName}としてあげるだけで、このTraitで定義したメソッドを使う事ができます。

Laravelでも様々なところで使われています。

例えば、SoftDeletes。

 

Helpers

これは、composerのautoloadingという仕組みを使う方法です。

LaravelにはHelpersという仕組みがありますが(https://laravel.com/docs/6.x/helpers)、これはcomposer.jsonに下記の記述がある事でどこからでも関数が呼べるのです。

同様の方法で、自作のヘルパー関数を定義する方法が一般的に利用されます。

 

TraitとHelperをどう使い分けるか

TraitとHelpersの使い分けを考える時の要点は、下記比較だと思います。

Trait

  • いちいちuseを書く必要がある
  • クラスじゃない場所では使えない(bladeの中など)

Helpers

  • 定義したメソッドをどこでも使える
  • その分、整理・把握が大変 

 

以上のことから、方針

Helperを使う場合

  • クラス外の場合(blade, config, ...)
  • 使用頻度がとても高い・多くのファイルで共通して使う場合


Traitを使う場合 = 上記以外