ตัวแก้ไขการเข้าถึงและ Traits ใน OOP ใน PHP
ควรให้ความสนใจว่าการใช้ Traits ไม่ใช่การสืบทอด ในการสืบทอด เมธอดและคุณสมบัติแบบส่วนตัว จะไม่ถูกสืบทอด
ใน Traits ทุกอย่างจะตรงกันข้าม: ในคลาสที่ใช้ Trait จะสามารถเข้าถึงได้ทั้งเมธอดและคุณสมบัติ แบบสาธารณะและแบบส่วนตัวของคลาส
มาดูตัวอย่างกัน สมมติว่าเรามี Trait ต่อไปนี้ พร้อมกับเมธอดแบบส่วนตัว:
<?php
trait TestTrait
{
private function method()
{
return '!!!';
}
}
?>
มาเชื่อมต่อ Trait ของเราเข้ากับคลาส:
<?php
class Test
{
use TestTrait;
}
new Test;
?>
มาใช้เมธอดแบบส่วนตัวของ Trait:
<?php
class Test
{
use TestTrait; // เชื่อมต่อ Trait
public function __construct()
{
echo $this->method(); // จะแสดง '!!!'
}
}
new Test;
?>