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