PHP да ООП да Трейтлар билан ишлашда методларнинг устунлиги
Агар классда ва трейтда бир хил номли метод бўлса, у ҳолда класснинг метуди трейтнинг метудини ўзгартиради:
<?php
trait TestTrait
{
// Method номли метод:
public function method()
{
return 'trait';
}
}
class TestClass
{
use TestTrait;
// Шу номли метод:
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';
}
}
// Class method методini ота-онадан мерос қилиб олади:
class TestClass extends ParentClass
{
use TestTrait;
}
$test = new TestClass;
echo $test->method(); // 'trait' чиқади, чунки трейт устунликка эга
?>