PHPのOOPにおけるトレイトのメソッドへのアクセス権の変更

トレイト内部では、メソッドに対して任意のアクセス修飾子 (つまりpublic、private またはprotected)を使用できます。しかし必要に応じて、 クラス自体内でこの修飾子を別のものに変更することが できます。そのためには、useの本文内で キーワードasの後に新しい 修飾子を指定します。

例を見てみましょう。 プライベートメソッドを持つ次のトレイトが あるとします:

php<?php
  trait TestTrait
  {
    private function method()
    {
      return '!!!';
    }
  }
?>

トレイトをクラスに接続しましょう:

php<?php
  class Test
  {
    use TestTrait;
  }
?>

クラス内でメソッドをパブリックに変更します:

php<?php
  class Test
  {
    use TestTrait {
      TestTrait::method as public;
    }
  }
?>

クラスの外部からのパブリックメソッドの動作を 確認しましょう:

php<?php
  $test = new Test;
  echo $test->method(); // '!!!' を出力します
?>