Prioritet for metoder ved arbeid med trekk i OOP i PHP
Hvis en klasse og et trekk har en metode med samme navn, vil klassens metode overstyre trekkets 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 skrive ut 'test' - klassens egen metode ble utført
?>
Hvis selve klassen ikke har en slik metode, men det er en navnekonflikt mellom trekkets metoder og forelderklassens metoder, har trekkets metoder prioritet:
<?php
trait TestTrait
{
// Metode med navnet method:
public function method()
{
return 'trait';
}
}
// Forelderklasse:
class ParentClass
{
// Metode med navnet method:
public function method()
{
return 'parent';
}
}
// Klassen arver metoden method fra forelder:
class TestClass extends ParentClass
{
use TestTrait;
}
$test = new TestClass;
echo $test->method(); // vil skrive ut 'trait', fordi trekket har prioritet
?>