Menetelmien prioriteetti piirteiden kanssa työskennellessä OOP:ssa PHP:ssä
Jos luokassa ja piirteessä on samanniminen menetelmä, niin luokan menetelmä korvaa piirteen menetelmän:
<?php
trait TestTrait
{
// Menetelmä nimeltä method:
public function method()
{
return 'trait';
}
}
class TestClass
{
use TestTrait;
// Samanniminen menetelmä nimeltä method:
public function method()
{
return 'test';
}
}
$test = new TestClass;
echo $test->method(); // tulostaa 'test' - luokan oma menetelmä toimi
?>
Jos luokalla itsellään ei ole sellaista menetelmää, mutta on nimen conflict piirteen menetelmien ja parent classin menetelmien välillä, niin piirteen menetelmillä on prioriteetti:
<?php
trait TestTrait
{
// Menetelmä nimeltä method:
public function method()
{
return 'trait';
}
}
// Parent class:
class ParentClass
{
// Menetelmä nimeltä method:
public function method()
{
return 'parent';
}
}
// Luokka perii menetelmän method parent classilta:
class TestClass extends ParentClass
{
use TestTrait;
}
$test = new TestClass;
echo test->method(); // tulostaa 'trait', koska piirteellä on prioriteetti
?>