Абстрактни методи на трейтове в ООП в PHP
В трейтове някои методи могат да бъдат декларирани като абстрактни. В този случай класът, който използва този трейт, ще трябва да реализира такъв метод. В този случай абстрактните методи на трейта не могат да бъдат частни.
Нека разгледаме пример. Да предположим, че имаме следния трейт:
<?php
trait TestTrait
{
public function method1()
{
return 1;
}
abstract public function method2();
}
?>
Да предположим, че нашият трейт се използва от класа Test.
Наличието на абстрактен метод в трейта ще задължи
програмиста да го реализира в класа, в противен случай
ще има PHP грешка.
Нека създадем класа Test заедно с
метода method2:
<?php
class Test
{
use TestTrait; // използваме трейта
// Реализираме абстрактния метод:
public function method2()
{
return 2;
}
}
new Test;
?>
Копирайте кода на моя трейт TestTrait
и кода на моя клас Test. Премахнете от
класа метода method2. Уверете се,
че липсата на неговата реализация води
до PHP грешка.