การเปลี่ยนแปลงสิทธิการเข้าถึงเมธอดของทริตใน OOP ใน PHP

ภายในทริต คุณสามารถใช้โมดิไฟเออร์การเข้าถึงสำหรับเมธอดใดๆ ก็ได้ (นั่นคือ public, private หรือ protected) อย่างไรก็ตาม หากจำเป็น ในคลาสเองคุณสามารถเปลี่ยนโมดิไฟเออร์นี้ เป็นโมดิไฟเออร์อื่นได้ โดยในเนื้อความของ use หลัง คีย์เวิร์ด as คุณต้องระบุโมดิไฟเออร์ใหม่

มาดูตัวอย่างกัน สมมติว่าเรามีทริตต่อไปนี้ ที่มีเมธอดส่วนตัว:

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

มาเชื่อมต่อทริตของเราเข้ากับคลาส:

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

มาเปลี่ยนเมธอดในคลาสให้เป็นสาธารณะ:

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

มาเช็คการทำงานของเมธอดสาธารณะ จากภายนอกคลาส:

php<?php
  $test = new Test;
  echo $test->method(); // จะแสดงผล '!!!'
?>