trait中の関数を差分プログラミングをする

  • 2018年12月6日
  • PHP

 traitはクラス中に現れる共通のプロパティ、メソッドをまとめて記述するための仕組みです。コード中におけるその扱いは継承に似ています。継承を行った場合、スコープ定義演算子をもちいることによってコードをコピペせずにちょっとだけ処理を付け足すことが出来ます。

class ChildHoge extends ParentHoge
{
  public function __construct()
  {
    //親のコードの処理前に付け足す処理の部分
    parent::__construct();
    //親のコードの処理後に付け足す処理の部分
  }
}

 このように便利なスコープ定義演算子ですが、traitを指すことはできません。traitでこれに似たことをしたい時、名前の変換を行うことによって実現ができます。元のコードを別名として扱い、traitを読み込んだクラスで元々の名前のメソッドを実装することによってクラス外のふるまいを変えることなくちょっと付け足しただけの差分プログラミングができます。

class ChildHoge
{
  use FugaTrait {__construct as traitConstruct;}
  
  public function __construct()
  {
    //トレイトのコードの処理前に付け足す処理の部分
    $this->traitConstruct();
    //トレイトのコードの処理後に付け足す処理の部分
  }
}
>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG