Prioriteit van methodes bij het werken met traits in OOP in PHP
Als een klasse en een trait een methode met dezelfde naam hebben, dan overschrijft de methode van de klasse de methode van de trait:
<?php
trait TestTrait
{
// Methode met de naam method:
public function method()
{
return 'trait';
}
}
class TestClass
{
use TestTrait;
// Dezelfde methode met de naam method:
public function method()
{
return 'test';
}
}
$test = new TestClass;
echo $test->method(); // geeft 'test' weer - de methode van de klasse zelf werkte
?>
Als de klasse zelf zo'n methode niet heeft, maar er is een naamconflict tussen de methodes van de trait en de methodes van de bovenliggende klasse, dan hebben de methodes van de trait prioriteit:
<?php
trait TestTrait
{
// Methode met de naam method:
public function method()
{
return 'trait';
}
}
// Bovenliggende klasse:
class ParentClass
{
// Methode met de naam method:
public function method()
{
return 'parent';
}
}
// De klasse erft de methode method van de bovenliggende:
class TestClass extends ParentClass
{
use TestTrait;
}
$test = new TestClass;
echo $test->method(); // geeft 'trait' weer, omdat de trait prioriteit heeft
?>