Интерфейсы и абстрактные классы

В случае если класс подключает к себе интерфейсы, но реализует не все методы в них, он автоматически становится абстрактным.

Листинг 2 Интерфейсы и абстрактные классы. Файл abstract.php

Трейты

Начиная с версии 5.4, в РНР введен дополнительный инструмент для повторного использования кода в классах - трейты. В отличие от интерфейсов, трейты содержат не абстрактные методы, а общие фрагменты классов.

Если мы объявляем интерфейсы Seo и Tаg и заставляем все классы реализовывать методы этих интерфейсов, наверняка среди реализаций будет довольно много повторяющегося кода. Для решения этой проблемы как раз и предназначены трейты. Реализовав один раз функциональность sео-блока и тегов Tag, их можно подмешивать в любой класс, в котором данная функциональность может потребоваться.

Объявляются трейты при помощи ключевого слова trait, после которого следует название трейта и в фигурных скобках его содержимое. Для включения одного или нескольких трейтов в класс используется ключевое слово use (листинг 3).

Листинг 3 Использование трейтов. Файл traits.php

Результатом работы скрипта из листинга 3 будут следующие строки:

Seo:: keywords

Tag::tags


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: