Бисёр трейтҳо дар ООП дар 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 созед,
ки ҷамъи натиҷаҳои методҳои пайвастшудаи
трейтҳоро бармегардонад.