Abstraktné metódy traitov v OOP v PHP

V traitoch je možné niektoré metódy deklarovať ako abstraktné. V tomto prípade ich musí trieda, ktorá používa tento trait, implementovať. Abstraktné metódy traitu nesmú byť súkromné.

Pozrime sa na príklad. Predpokladajme, že máme takýto trait:

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

Predpokladajme, že náš trait používa trieda Test. Prítomnosť abstraktnej metódy v traite bude vyžadovať od programátora jej implementáciu v triede, inak dôjde k chybe PHP.

Vytvorme triedu Test spolu s metódou method2:

Test.php<?php
  class Test
  {
    use TestTrait; // používame trait
    
    // Implementujeme abstraktnú metódu:
    public function method2()
    {
      return 2;
    }
  }
  
  new Test;
?>
Задание 1

Skopírujte kód môjho traitu TestTrait a kód mojej triedy Test. Odstráňte z triedy metódu method2. Presvedčte sa, že absencia jej implementácie povedie k chybe PHP.