ตัวแก้ไขการเข้าถึงและ Traits ใน OOP ใน PHP

ควรให้ความสนใจว่าการใช้ Traits ไม่ใช่การสืบทอด ในการสืบทอด เมธอดและคุณสมบัติแบบส่วนตัว จะไม่ถูกสืบทอด

ใน Traits ทุกอย่างจะตรงกันข้าม: ในคลาสที่ใช้ Trait จะสามารถเข้าถึงได้ทั้งเมธอดและคุณสมบัติ แบบสาธารณะและแบบส่วนตัวของคลาส

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

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

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

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

มาใช้เมธอดแบบส่วนตัวของ Trait:

php<?php
  class Test
  {
    use TestTrait; // เชื่อมต่อ Trait
    
    public function __construct()
    {
      echo $this->method(); // จะแสดง '!!!'
    }
  }
  
  new Test;
?>