Abstraktūs treitų metodai OOP PHP

Treituose galima kai kuriuos metodus deklaruoti abstrakčiais. Tokiu atveju klasė, naudojanti šį treitą, privalės implementuoti tokį metodą. Be to, abstraktūs treito metodai negali būti privatūs.

Pažiūrėkime pavyzdžiu. Tarkime, mes turime šį treitą:

TestTrait.php<?php
  trait TestTrait
  {
    public function method1()
    {
      return 1;
    }
    
    abstract public function method2();
  }
?>

Tarkime, mūsų treitą naudoja klasė Test. Abstraktaus metodo buvimas treite privers programuotoją jį implementuoti klasėje, kitaip bus PHP klaida.

Sukurkime klasę Test kartu su metodu method2:

Test.php<?php
  class Test
  {
    use TestTrait; // naudojame treitą
    
    // Implementuojame abstraktų metodą:
    public function method2()
    {
      return 2;
    }
  }
  
  new Test;
?>
Задание 1

Nukopijuokite mano treito TestTrait kodą ir mano klasės Test kodą. Ištrinkite iš klasės metodą method2. Įsitikinkite, kad jo implementacijos nebuvimas sukels PHP klaidą.