Несколько трейтов в ООП в PHP
В классе можно использовать не один, а несколько
трейтов. В этом и проявляется их преимущество
перед наследованием. Нужные для использования
в классе трейты можно указать через запятую
после ключевого слова use.
Давайте посмотрим на примере. Пусть у нас есть два трейта. Первый:
<?php
trait Helper1
{
private $name;
public function getName()
{
return $this->name;
}
}
?>
Второй:
<?php
trait Helper2
{
private $age;
public function getAge()
{
return $this->age;
}
}
?>
Используем наши трейты в классе:
<?php
class User
{
use Helper1, Helper2; // подключаем трейты
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
}
?>
Сделайте 3 трейта с названиями Trait1,
Trait2 и Trait3. Пусть в первом
трейте будет метод method1, возвращающий
1, во втором трейте - метод method2,
возвращающий 2, а в третьем трейте
- метод method3, возвращающий 3.
Пусть все эти методы будут приватными.
Сделайте класс Test, использующий
все три созданных нами трейта. Сделайте в
этом классе публичный метод getSum,
возвращающий сумму результатов методов подключенных
трейтов.