Abstraktní metody traitů v OOP v PHP

V traitech lze některé metody deklarovat abstraktními. V tomto případě je třída, která používá tento trait, povinna takovou metodu implementovat. Při tom abstraktní metody traitu nemohou být privátní.

Podívejme se na příklad. Předpokládejme, že máme takovýto trait:

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

Předpokládejme, že náš trait je používán třídou Test. Přítomnost abstraktní metody v traitu bude programátora zavazovat k její implementaci v třídě, jinak bude chyba PHP.

Vytvořme třídu Test spolu s metodou method2:

Test.php<?php
  class Test
  {
    use TestTrait; // používáme trait
    
    // Implementujeme abstraktní metodu:
    public function method2()
    {
      return 2;
    }
  }
  
  new Test;
?>
Задание 1

Zkopírujte kód mého traitu TestTrait a kód mé třídy Test. Odstraňte z třídy metodu method2. Přesvědčte se, že absence jeho implementace povede k chybě PHP.