Услубҳои аввалият дар кор бо трейтҳо дар ООП дар 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'-ро чоп мекунад, зеро трейт аввалият дорад
?>