PHP 객체 지향 프로그래밍에서의 접근 제어자와 트레이트
트레이트 사용이 상속이 아니라는 점에 주의해야 합니다. 상속에서는 private 메서드와 속성이 상속되지 않습니다.
트레이트에서는 반대입니다: 트레이트를 사용하는 클래스에서는 public 메서드와 속성뿐만 아니라 private 메서드와 속성도 모두 접근 가능합니다.
예제를 통해 살펴보겠습니다. private 메서드를 가진 다음과 같은 트레이트가 있다고 가정해 보겠습니다:
<?php
trait TestTrait
{
private function method()
{
return '!!!';
}
}
?>
트레이트를 클래스에 연결해 보겠습니다:
<?php
class Test
{
use TestTrait;
}
new Test;
?>
트레이트의 private 메서드를 사용해 보겠습니다:
<?php
class Test
{
use TestTrait; // 트레이트 연결
public function __construct()
{
echo $this->method(); // '!!!' 출력
}
}
new Test;
?>