PHP OOP에서 트레이트 메서드의 접근 권한 변경

트레이트 내부에서는 메서드에 대해 어떤 접근 제어자(즉, public, private 또는 protected)도 사용할 수 있습니다. 그러나 필요에 따라 클래스 자체에서 이 제어자를 다른 것으로 변경할 수 있습니다. 이를 위해 use 본문에서 키워드 as 뒤에 새로운 제어자를 지정해야 합니다.

예제를 통해 살펴보겠습니다. 다음과 같은 비공개(private) 메서드를 가진 트레이트가 있다고 가정해 보겠습니다:

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

이 트레이트를 클래스에 연결하겠습니다:

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

클래스에서 메서드를 공개(public)로 변경하겠습니다:

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

클래스 외부에서 공개 메서드의 작동을 확인해 보겠습니다:

php<?php
  $test = new Test;
  echo $test->method(); // '!!!'를 출력합니다
?>