Metódusok prioritása trait-ekkel való munkavégzéskor az OOP-ban PHP-ben
Ha egy osztályban és egy trait-ben is van azonos nevű metódus, akkor az osztály metódusa felülírja a trait metódusát:
<?php
trait TestTrait
{
// Metódus method névvel:
public function method()
{
return 'trait';
}
}
class TestClass
{
use TestTrait;
// Ugyanaz a metódus method névvel:
public function method()
{
return 'test';
}
}
$test = new TestClass;
echo $test->method(); // kiírja 'test' - az osztály saját metódusa futott le
?>
Ha magának az osztálynak nincs ilyen metódusa, de névütközés van a trait metódusai és a szülőosztály metódusai között, akkor a trait metódusainak van prioritása:
<?php
trait TestTrait
{
// Metódus method névvel:
public function method()
{
return 'trait';
}
}
// Szülőosztály:
class ParentClass
{
// Metódus method névvel:
public function method()
{
return 'parent';
}
}
// Az osztály örökli a method metódust a szülőtől:
class TestClass extends ParentClass
{
use TestTrait;
}
$test = new TestClass;
echo $test->method(); // kiírja 'trait', mert a trait-nek van prioritása
?>