การใช้งาน Traits ใน Traits
Traits เช่นเดียวกับคลาส ก็สามารถใช้ Traits อื่นได้เช่นกัน ลองดูตัวอย่างกัน สมมติว่าเรามี Trait นี้ที่มีสองเมธอด:
<?php
trait Trait1
{
private function method1()
{
return 1;
}
private function method2()
{
return 2;
}
}
?>
สมมติว่าเรามีอีก Trait หนึ่ง:
<?php
trait Trait2
{
private function method3()
{
return 3;
}
}
?>
ให้เราเชื่อมต่อ Trait Trait1 เข้ากับ Trait Trait2:
<?php
trait Trait2
{
use Trait1; // ใช้ Trait แรก
private function method3()
{
return 3;
}
}
?>
หลังจากเชื่อมต่อแบบนี้ ผลลัพธ์คือ Trait2
นอกจากจะมีเมธอดของตัวเองแล้ว ยังจะมีเมธอด
ของ Trait Trait1 ด้วย มาตรวจสอบกัน: สร้าง
คลาส Test, เชื่อมต่อ Trait Trait2 เข้ากับคลาสนั้น
และทำให้แน่ใจว่าในคลาสของเรา
จะมีเมธอดของทั้ง Trait แรก
และ Trait ที่สอง:
<?php
class Test
{
use Trait2; // เชื่อมต่อ Trait ที่สอง
public function __construct()
{
echo $this->method1(); // เมธอดของ Trait แรก
echo $this->method2(); // เมธอดของ Trait แรก
echo $this->method3(); // เมธอดของ Trait ที่สอง
}
}
?>
สร้าง Traits เหมือนกับของฉันเอง
และเชื่อมต่อเข้ากับคลาส Test
สร้างเมธอด getSum ในคลาสนี้
ที่คืนค่าผลรวมของผลลัพธ์เมธอดจาก Traits
ที่เชื่อมต่อเข้า