PHP да ООПда бир нечта трейтлар
Классда битта эмас, бир нечта
трейтлардан фойдаланиш мумкин. Мана шу жойда уларнинг
мерос олишдан юқорилик жиҳати намойон бўлади. Ишлатиш учун зарур
бўлган трейтларни use калит сўзидан кейин vergul билан
кўрсатиш мумкин.
Келгила, мисолда кўрамиз. Фарз қилайлик, бизда икки трейт мавжуд. Биринчиси:
<?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 бўлсин. Биринчи
трейтда 1ни қайтарувчи method1 методи бўлсин,
иккинчи трейтда - 2ни қайтарувчи method2 методи,
учинчи трейтда эса
- 3ни қайтарувчи method3 методи бўлсин.
Бу методларнинг ҳаммаси хусусий бўлсин.
Test классни яратинг, у биз яратган
барча уч трейтдан фойдалансин. Ушбу
классда getSum оммавий методини яратинг,
у уланган трейтлар методлари натижалари йиғиндисини қайтарсин.