Пример использования трайтов(trait) в PHP

Начиная с версии 5.4 в PHP был добавлен механизм трейтов, который объявляется с использованием ключевого слова trait и который представляет из себя механизм расширения функционала класса потребность в котором возможно возникла поскольку в PHP множественное наследование возможно только через интерфейсы, то есть в extands Вы можете указать только один класс. Трейты(которые расшифровываются как "примеси") позволяют компенсировать этот недостаток, то есть методы описанные в трейте станут доступны в классе после их подключения для чего в классе используется ключевое слово use за которым следует название трейта. Пример из листинга ниже демонстрирует как с использованием трейта могут быть расширены методы класса(при этом не важно наследуется ли этот класс). В конце примера в комментариях описывается по какой именно логике осуществляется вывод с использованием echo как из методов класса так и трейтов.

Обратите внимание что для использования трейтов совершенно не обязательно чтобы класс в котором используется трейт был наследником другого класса, как в примере выше в котором класс example наследуется от класса base. Если убрать из трайта метод echo12, то наследование при объявления класса example можно упустить, при таких обстоятельствах по прежнему возможно вызвать метод echo2 как в примере описанном с следующем листинге.

Таким образом если коротко сформулировать: трейт - это набор методов который будет доступен для использования у классе после подключения трейта к классу с использованием ключевого слова use за которым следует название трайта. Это равносильно ситуации если код методов трайта как есть вписать в класс, трайт же позволяет сделать то же самое используя ключевое слово use.

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

Комментарии

Если у Вас возникли вопросы, Вы можете задать их в форме ниже. В частности если Ваш вопрос по Bitrix и что то не получается - можно спросить. Ваш e-mail не публикуется, при этом я отвечу на него если будет что то по теме. Писать необходимо для людей - избегайте сленга, пишите орфографически правильно.

Имя:
E-mail:
Текст комментария:

Вы так же можете прочитать следующие статьи: