PHPのOOPにおけるトレイトのメソッドへのアクセス権の変更
トレイト内部では、メソッドに対して任意のアクセス修飾子
(つまりpublic、private
またはprotected)を使用できます。しかし必要に応じて、
クラス自体内でこの修飾子を別のものに変更することが
できます。そのためには、useの本文内で
キーワードasの後に新しい
修飾子を指定します。
例を見てみましょう。 プライベートメソッドを持つ次のトレイトが あるとします:
<?php
trait TestTrait
{
private function method()
{
return '!!!';
}
}
?>
トレイトをクラスに接続しましょう:
<?php
class Test
{
use TestTrait;
}
?>
クラス内でメソッドをパブリックに変更します:
<?php
class Test
{
use TestTrait {
TestTrait::method as public;
}
}
?>
クラスの外部からのパブリックメソッドの動作を 確認しましょう:
<?php
$test = new Test;
echo $test->method(); // '!!!' を出力します
?>