PHPде ООПдо трейттер менен иштөөдө методдордун приоритети
Эгер класста жана трейтте бирдей аттагы метод бар болсо, анда класстын методу трейттин методунан үстөмдүк кылат:
<?php
trait TestTrait
{
// method атындагы метод:
public function method()
{
return 'trait';
}
}
class TestClass
{
use TestTrait;
// Ошол эле method атындагы метод:
public function method()
{
return 'test';
}
}
$test = new TestClass;
echo $test->method(); // 'test' чыгарат - класстын өзүнүн методу иштейт
?>
Эгер класстын өзүндө мындай метод жок болсо, бирок трейттин методдорунун жана ата-класстын методдорунун аттары карама-каршы келсе, анда трейттин методдору артыкчылыкка ээ:
<?php
trait TestTrait
{
// method атындагы метод:
public function method()
{
return 'trait';
}
}
// Ата-класс:
class ParentClass
{
// method атындагы метод:
public function method()
{
return 'parent';
}
}
// Класс method методуна ата-класстан мураса келет:
class TestClass extends ParentClass
{
use TestTrait;
}
$test = new TestClass;
echo $test->method(); // 'trait' чыгарат, себеби трейттин артыкчылыгы бар
?>