การเปลี่ยนแปลงสิทธิการเข้าถึงเมธอดของทริตใน OOP ใน PHP
ภายในทริต คุณสามารถใช้โมดิไฟเออร์การเข้าถึงสำหรับเมธอดใดๆ ก็ได้ (นั่นคือ public, private
หรือ protected) อย่างไรก็ตาม หากจำเป็น
ในคลาสเองคุณสามารถเปลี่ยนโมดิไฟเออร์นี้
เป็นโมดิไฟเออร์อื่นได้ โดยในเนื้อความของ use หลัง
คีย์เวิร์ด as คุณต้องระบุโมดิไฟเออร์ใหม่
มาดูตัวอย่างกัน สมมติว่าเรามีทริตต่อไปนี้ ที่มีเมธอดส่วนตัว:
<?php
trait TestTrait
{
private function method()
{
return '!!!';
}
}
?>
มาเชื่อมต่อทริตของเราเข้ากับคลาส:
<?php
class Test
{
use TestTrait;
}
?>
มาเปลี่ยนเมธอดในคลาสให้เป็นสาธารณะ:
<?php
class Test
{
use TestTrait {
TestTrait::method as public;
}
}
?>
มาเช็คการทำงานของเมธอดสาธารณะ จากภายนอกคลาส:
<?php
$test = new Test;
echo $test->method(); // จะแสดงผล '!!!'
?>