Các công cụ sửa đổi quyền truy cập và trait trong OOP trong PHP
Cần lưu ý với bạn rằng việc sử dụng trait không phải là kế thừa. Trong kế thừa, các phương thức và thuộc tính riêng tư không được kế thừa.
Trong trait thì ngược lại: trong lớp sử dụng trait sẽ có thể truy cập được cả các phương thức và thuộc tính công khai lẫn riêng tư của trait.
Hãy xem ví dụ. Giả sử chúng ta có trait sau với một phương thức riêng tư:
<?php
trait TestTrait
{
private function method()
{
return '!!!';
}
}
?>
Hãy kết nối trait của chúng ta với một lớp:
<?php
class Test
{
use TestTrait;
}
new Test;
?>
Sử dụng phương thức riêng tư của trait:
<?php
class Test
{
use TestTrait; // kết nối trait
public function __construct()
{
echo $this->method(); // sẽ in ra '!!!'
}
}
new Test;
?>