Prioritering av metoder vid arbete med traits i OOP i PHP
Om det finns en metod med samma namn i klassen och i traitet, kommer klassens metod att åsidosätta traitets metod:
<?php
trait TestTrait
{
// Metod med namnet method:
public function method()
{
return 'trait';
}
}
class TestClass
{
use TestTrait;
// Samma metod med namnet method:
public function method()
{
return 'test';
}
}
$test = new TestClass;
echo $test->method(); // skriver ut 'test' - klassens metod fungerade
?>
Om själva klassen inte har en sådan metod, men det finns en namnfångst mellan traitets metoder och föräldraklassens metoder, har traitets metoder prioritet:
<?php
trait TestTrait
{
// Metod med namnet method:
public function method()
{
return 'trait';
}
}
// Föräldraklass:
class ParentClass
{
// Metod med namnet method:
public function method()
{
return 'parent';
}
}
// Klassen ärver metoden method från föräldern:
class TestClass extends ParentClass
{
use TestTrait;
}
$test = new TestClass;
echo $test->method(); // skriver ut 'trait', eftersom traitet har prioritet
?>