Prioritet for metoder ved arbejde med traits i OOP i PHP
Hvis en klasse og et trait har en metode med samme navn, vil klassens metode tilsidesætte traitets metode:
<?php
trait TestTrait
{
// Metode med navnet method:
public function method()
{
return 'trait';
}
}
class TestClass
{
use TestTrait;
// Samme metode med navnet method:
public function method()
{
return 'test';
}
}
$test = new TestClass;
echo $test->method(); // vil udskrive 'test' - klassens metode blev brugt
?>
Hvis klassen selv ikke har en sådan metode, men der er en navnekonflikt mellem traitets metoder og forældreklassens metoder, har traitets metoder prioritet:
<?php
trait TestTrait
{
// Metode med navnet method:
public function method()
{
return 'trait';
}
}
// Forældreklassen:
class ParentClass
{
// Metode med navnet method:
public function method()
{
return 'parent';
}
}
// Klassen arver metoden method fra forældreklassen:
class TestClass extends ParentClass
{
use TestTrait;
}
$test = new TestClass;
echo $test->method(); // vil udskrive 'trait', da traitet har prioritet
?>