Traits

Последнее обновление: 23.03.2021

Traits представляют группу методов, которые могут быть добавлены в классы. Traits позволяют определять блоки функционала и многократно повторно использовать в классах без необходимости усложнять код классов, которые используют эти методы.

Traits определяются с помощью ключевого словва trait, после которого идет название трейта:

trait Printer { }

Traits могут содержать только статические и нестатические методы:

trait Printer
{
	public function printSimpleText($text) { echo "$text<br>"; }
	public function printHeaderText($text) { echo "<h2>$text<h2>"; }
}

Для применения классов трейта применяется оператор use, после которого указывается добавляемый трейт:

trait Printer
{
	public function printSimpleText($text) { echo "$text<br>"; }
	public function printHeaderText($text) { echo "<h2>$text<h2>"; }
}

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"; }
}

class Message extends Data
{
	use Printer;
}
$myMessage = new Message();
$myMessage->print();		// Print from Printer
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850