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:
<?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:
<?php
class Test
{
use TestTrait; // používáme trait
// Implementujeme abstraktní metodu:
public function method2()
{
return 2;
}
}
new Test;
?>
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.