PHP - Что такое трейты?
Трейты используются для объявления методов, которые могут использоваться в нескольких классах. Трейты могут иметь методы и абстрактные методы, которые могут использоваться в нескольких классах, и методы могут иметь любой модификатор доступа (public, private или protected).
Трейты позволяют свободно использовать несколько методов в разных классах и являются механизмом повторного использования кода.
Определение трейта
Трейт определяется с помощью ключевого слова
trait, за которым следует имя трейта:
trait ИмяТрейта {
// некоторый код...
}Использование трейта
Чтобы использовать трейт в классе, используйте ключевое слово
use, за которым следует имя трейта:
class МойКласс {
use ИмяТрейта;
}В следующем примере мы определяем трейт: message1. Затем мы создаем класс: Welcome. Этот класс использует трейт, и все методы трейта будут доступны в классе:
Пример
<?php
// Определяем трейт
trait message1 {
public function msg1() {
echo "PHP ООП это весело! ";
}
}
// Используем трейт в классе
class Welcome {
use
message1;
}
$obj = new Welcome();
$obj->msg1();
?>
Попробуйте сами »
Совет: Если другим классам нужно использовать функцию msg1(), просто используйте трейт message1 в этих классах. Это уменьшает дублирование кода, потому что нет необходимости объявлять один и тот же метод снова и снова.
PHP - Два класса и один трейт
В следующем примере мы определяем один трейт: message1. Этот трейт содержит три публичных метода. Затем мы создаем два класса: Welcome и Welcome2. Классы Welcome и Welcome2 используют трейт, и все методы трейта будут доступны в обоих классах. Однако класс Welcome использует только один из методов трейта, в то время как Welcome2 использует все три метода трейта:
Пример
<?php
trait message1 {
public function msg1() {
echo "PHP ООП это весело! ";
}
public function msg2() {
echo "Трейты уменьшают дублирование кода! ";
}
public
function msg3() {
echo "Привет мир!";
}
}
class Welcome {
use message1;
}
class
Welcome2 {
use message1;
}
$obj = new Welcome();
$obj->msg1();
echo "<br>";
$obj2 = new Welcome2();
$obj2->msg1();
$obj2->msg2();
$obj2->msg3();
?>
Попробуйте сами »
PHP - Использование нескольких трейтов
В следующем примере мы определяем два трейта: message1 и message2. Затем мы создаем два класса: Welcome и Welcome2. Первый класс (Welcome) использует трейт message1, а второй класс (Welcome2) использует оба трейта message1 и message2 (несколько трейтов разделяются запятыми):
Пример
<?php
trait message1 {
public function msg1() {
echo "PHP ООП это весело! ";
}
}
trait message2 {
public function msg2()
{
echo "Трейты уменьшают дублирование кода!";
}
}
class Welcome {
use message1;
}
class Welcome2 {
use message1, message2;
}
$obj = new Welcome();
$obj->msg1();
echo "<br>";
$obj2 =
new Welcome2();
$obj2->msg1();
$obj2->msg2();
?>
Попробуйте сами »