Абстрактные методы трейтов

В трейтах можно некоторые методы объявлять абстрактными. В этом случае класс, использующий этот трейт, обязан будет реализовать такой метод. При этом абстрактные методы трейта не могут быть приватными.

Давайте посмотрим на примере. Пусть у нас есть вот такой трейт:

<?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.