В этой части учебника рассмотрим в PHP трейты, что это такое, зачем они нужны и как с ними работать, думаю будет интересная часть.
Что такое трейты и зачем они нужны:
Трейты в PHP, как и в других языках программирования, механизм который позволяет использовать код повторно, но поддерживает только одиночного наследования.
Это нужно для повторного использования кода, также, что бы избавится от дублирования кода.
Как работать с трейтами:
В принципе с трейтами работать очень просто, сейчас покажу как.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | // Базовый класс class Base { public function sayHello() { echo 'Hello '; } } // Объявление трейта trait SayWorld { public function sayHello() { parent::sayHello(); echo 'World!'; } } // Объявление наследования класса class MyHelloWorld extends Base { // Использование метода трейта SayWorld use SayWorld; } |
Давайте разберём код, сначала мы создаём обычный базовый класс, тут не чего интересного, потом создаём трейт, для этого используем ключевое слово trait
, в нём по сути делаем дубликат метода из базового класса, и дополняем метод этого класса.
После создаём класс, который будет унаследован от базового класса, в нём прописываем одну команду, которая позволит нам использовать, вместо методов из базового класса, их изменёный аналог из нашего трейта.
Для этого используем ключевое слово use
и название трейта, теперь давайте объявим объект класса MyHelloWorld
.
1 2 | $hw = new MyHelloWorld(); $hw -> sayHello(); |
Как видите, мы по сути вызываем метод из базового класса, но выведет уже изменённый метод в трейте, вот результат.
Мы вывели изменённый метод из трейта, но если мы уберём вызов трейта, то он выведит просто «Hello», как то так получается.
Использование сначала трейта:
Также можно создать сначала трейт, а потом изменить его метод внутри класса, вот пример.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | // Объявление трейта trait HelloWorld { // Объявление метода в трейте public function sayHello() { echo 'Hello World!'; } } // Объявление класса class TheWorldIsNotEnough { // Берём трейт HelloWorld use HelloWorld; // Объявляем метод из трейта public function sayHello() { // Изменяем метод echo 'Hello Universe!'; } } $hw = new TheWorldIsNotEnough(); $hw -> sayHello(); |
Как видите, мы сначала создали трейт, а потом изменили его метод в классе, программа выведет уже то, что мы изменили.
Но если мы не будем объявлять и изменять метод в классе, то выведет «Hello World!», или то что стоит в трейте.
Вывод:
В этой части учебника разобрали в PHP трейты, это не очень большая часть, так как, тоже почти не чего рассказывать про них, хотя эту часть было бы можно вообще пропустить наверное.