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

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

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

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

←→
↑