PHP OOP에서 트레이트 메서드의 접근 권한 변경
트레이트 내부에서는 메서드에 대해 어떤 접근 제어자(즉, public, private
또는 protected)도 사용할 수 있습니다. 그러나 필요에 따라
클래스 자체에서 이 제어자를 다른 것으로 변경할 수 있습니다.
이를 위해 use 본문에서
키워드 as 뒤에
새로운 제어자를 지정해야 합니다.
예제를 통해 살펴보겠습니다. 다음과 같은 비공개(private) 메서드를 가진 트레이트가 있다고 가정해 보겠습니다:
<?php
trait TestTrait
{
private function method()
{
return '!!!';
}
}
?>
이 트레이트를 클래스에 연결하겠습니다:
<?php
class Test
{
use TestTrait;
}
?>
클래스에서 메서드를 공개(public)로 변경하겠습니다:
<?php
class Test
{
use TestTrait {
TestTrait::method as public;
}
}
?>
클래스 외부에서 공개 메서드의 작동을 확인해 보겠습니다:
<?php
$test = new Test;
echo $test->method(); // '!!!'를 출력합니다
?>