Полный цикл в digital

Traits группы свойств и методов в PHP

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

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

trait Printer {
}

Для применения в классе трейта, применяется оператор 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";
    }
}

// класс наследник от трейта Printer и класса Data
class Message extends Data
{
    use Printer;
}

// объект класса
$myMessage = new Message();
$myMessage->print();
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!