Traits группы свойств и методов в PHP
Traits
представляют группу свойств и методов, которые могут быть добавлены в классы. Traits
позволяют определять блоки функционала и многократно повторно использовать в классах без необходимости усложнять код классов, которые используют эти методы.
Traits
определяются с помощью ключевого словва trait
, который идет название трейта:
trait Printer {
}
Для применения в классе трейта, применяется оператор use
, после которого указывается добавляемый трейт:
<?
// трейт
trait Printer
{
// метод трейта
public function printSimpleText($text)
{
echo "$text<br>";
}
// метод трейта
public function printHeaderText($text)
{
echo "<h2>$text<h2>";
}
}
// класс который наследует трейт Printer
class Message
{
use Printer;
}
// объект класса
$myMessage = new Message();
$myMessage->printSimpleText("Hello World!");
$myMessage->printHeaderText("Hello PHP 8");
После добавления трейта с помощью оератора use
класс может использовать его методы, как-будто они определены в самом этом классе.
Следует учитывать, что при наследовании методы трейта переопределяют унаследованные методы с тем же именем:
<?
// класс
class Data
{
// одинаковая функция в классе
function print()
{
echo "Print from Data";
}
}
// трейт
trait Printer
{
// одинаковая функция в трейте
function print()
{
echo "Print from Printer";
}
}
// класс наследник от трейта Printer и класса Data
class Message extends Data
{
use Printer;
}
// объект класса
$myMessage = new Message();
$myMessage->print();