Meetodite prioriteet traitidega töötamisel OOP-s PHP-s
Kui klassis ja traitis on sama nimega meetod, siis klassi meetod kirjutab üle trait'i meetodi:
<?php
trait TestTrait
{
// Meetod nimega method:
public function method()
{
return 'trait';
}
}
class TestClass
{
use TestTrait;
// Sama meetod nimega method:
public function method()
{
return 'test';
}
}
$test = new TestClass;
echo $test->method(); // väljastab 'test' - töötas klassi enda meetod
?>
Kui klassil endal sellist meetodit pole, kuid on olemas trait'i meetodite ja vanemaklassi meetodite nimetuste konflikt, siis trait'i meetoditel on prioriteet:
<?php
trait TestTrait
{
// Meetod nimega method:
public function method()
{
return 'trait';
}
}
// Vanemaklass:
class ParentClass
{
// Meetod nimega method:
public function method()
{
return 'parent';
}
}
// Klass pärib meetodi method vanemalt:
class TestClass extends ParentClass
{
use TestTrait;
}
$test = new TestClass;
echo $test->method(); // väljastab 'trait', sest trait'il on prioriteet
?>