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', себебі трейттің басымдығы бар
?>