PHPのOOPにおけるアクセス修飾子とトレイト
注意すべき点は、トレイトの使用は継承ではないということです。 継承の場合、プライベートメソッドとプロパティは継承されません。
トレイトでは逆で、トレイトを使用するクラスでは、 そのクラスのパブリックメソッドやプロパティだけでなく、 プライベートメソッドやプロパティもアクセス可能になります。
例を見てみましょう。 プライベートメソッドを持つ次のようなトレイトがあるとします:
<?php
trait TestTrait
{
private function method()
{
return '!!!';
}
}
?>
このトレイトをクラスに接続します:
<?php
class Test
{
use TestTrait;
}
new Test;
?>
トレイトのプライベートメソッドを使用します:
<?php
class Test
{
use TestTrait; // トレイトを接続
public function __construct()
{
echo $this->method(); // '!!!'を出力
}
}
new Test;
?>