Metode abstracte ale trăsăturilor în OOP în PHP

În trăsături, unele metode pot fi declarate abstracte. În acest caz, clasa care utilizează această trăsătură va trebui să implementeze un astfel de metodă. În același timp, metodele abstracte ale trăsăturii nu pot fi private.

Să ne uităm la un exemplu. Să presupunem că avem următoarea trăsătură:

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

Să presupunem că trăsătura noastră este utilizată de clasa Test. Prezența unei metode abstracte în trăsătură va obliga programatorul să o implementeze în clasă, altfel va apărea o eroare PHP.

Să creem clasa Test împreună cu metoda method2:

Test.php<?php
  class Test
  {
    use TestTrait; // utilizăm trăsătura
    
    // Implementăm metoda abstractă:
    public function method2()
    {
      return 2;
    }
  }
  
  new Test;
?>
Задание 1

Copiați codul trăsăturii mele TestTrait și codul clasei mele Test. Ștergeți din clasă metoda method2. Asigurați-vă că absența implementării acesteia va duce la o eroare PHP.