Абстрактные методы трейтов
В трейтах можно некоторые методы объявлять абстрактными. В этом случае класс, использующий этот трейт, обязан будет реализовать такой метод. При этом абстрактные методы трейта не могут быть приватными.
Давайте посмотрим на примере. Пусть у нас есть вот такой трейт:
<?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.