Sử dụng trait trong trait
Traits, giống như các lớp, cũng có thể sử dụng các traits khác. Hãy cùng xem qua ví dụ. Giả sử chúng ta có trait sau đây với hai phương thức:
<?php
trait Trait1
{
private function method1()
{
return 1;
}
private function method2()
{
return 2;
}
}
?>
Giả sử chúng ta cũng có một trait khác:
<?php
trait Trait2
{
private function method3()
{
return 3;
}
}
?>
Hãy kết nối trait Trait1
vào trait Trait2:
<?php
trait Trait2
{
use Trait1; // sử dụng trait đầu tiên
private function method3()
{
return 3;
}
}
?>
Sau khi kết nối như vậy, Trait2
sẽ có các phương thức của trait Trait1
bên cạnh các phương thức của chính nó.
Hãy kiểm tra điều này: tạo một lớp
Test, kết nối trait
Trait2 vào nó và đảm bảo rằng trong lớp của chúng ta
sẽ xuất hiện các phương thức của cả trait thứ nhất
lẫn trait thứ hai:
<?php
class Test
{
use Trait2; // kết nối trait thứ hai
public function __construct()
{
echo $this->method1(); // phương thức của trait thứ nhất
echo $this->method2(); // phương thức của trait thứ nhất
echo $this->method3(); // phương thức của trait thứ hai
}
}
?>
Tự mình tạo các trait giống như của tôi
và kết nối chúng vào lớp Test.
Tạo trong lớp này một phương thức getSum,
trả về tổng kết quả của các phương thức từ các trait đã kết nối.