การใช้งาน Traits ใน Traits

Traits เช่นเดียวกับคลาส ก็สามารถใช้ Traits อื่นได้เช่นกัน ลองดูตัวอย่างกัน สมมติว่าเรามี Trait นี้ที่มีสองเมธอด:

Trait1.php<?php
  trait Trait1
  {
    private function method1()
    {
      return 1;
    }
    
    private function method2()
    {
      return 2;
    }
  }
?>

สมมติว่าเรามีอีก Trait หนึ่ง:

Trait2.php<?php
  trait Trait2
  {
    private function method3()
    {
      return 3;
    }
  }
?>

ให้เราเชื่อมต่อ Trait Trait1 เข้ากับ Trait Trait2:

Trait3.php<?php
  trait Trait2
  {
    use Trait1; // ใช้ Trait แรก
    
    private function method3()
    {
      return 3;
    }
  }
?>

หลังจากเชื่อมต่อแบบนี้ ผลลัพธ์คือ Trait2 นอกจากจะมีเมธอดของตัวเองแล้ว ยังจะมีเมธอด ของ Trait Trait1 ด้วย มาตรวจสอบกัน: สร้าง คลาส Test, เชื่อมต่อ Trait Trait2 เข้ากับคลาสนั้น และทำให้แน่ใจว่าในคลาสของเรา จะมีเมธอดของทั้ง Trait แรก และ Trait ที่สอง:

Test.php<?php
  class Test
  {
    use Trait2; // เชื่อมต่อ Trait ที่สอง
    
    public function __construct()
    {
      echo $this->method1(); // เมธอดของ Trait แรก
      echo $this->method2(); // เมธอดของ Trait แรก
      echo $this->method3(); // เมธอดของ Trait ที่สอง
    }
  }
?>
Задание 1

สร้าง Traits เหมือนกับของฉันเอง และเชื่อมต่อเข้ากับคลาส Test สร้างเมธอด getSum ในคลาสนี้ ที่คืนค่าผลรวมของผลลัพธ์เมธอดจาก Traits ที่เชื่อมต่อเข้า