Përparësia e Metodave gjatë Punës me Traits në OOP në PHP
Nëse në një klasë dhe në një trait ekziston një metodë me të njëjtin emër, atëherë metoda e klasës do të rishkruajë metodën e trait-it:
<?php
trait TestTrait
{
// Metodë me emrin method:
public function method()
{
return 'trait';
}
}
class TestClass
{
use TestTrait;
// E njëjta metodë me emrin method:
public function method()
{
return 'test';
}
}
$test = new TestClass;
echo $test->method(); // do të shfaqë 'test' - u ekzekutua metoda e vetë klasës
?>
Nëse vetë klasa nuk e ka një metodë të tillë, por ka një konflikt emrash midis metodave të trait-it dhe metodave të klasës prind, atëherë metodat e trait-it kanë përparësi:
<?php
trait TestTrait
{
// Metodë me emrin method:
public function method()
{
return 'trait';
}
}
// Klasa prind:
class ParentClass
{
// Metodë me emrin method:
public function method()
{
return 'parent';
}
}
// Klasa trashëgon metodën method nga prindi:
class TestClass extends ParentClass
{
use TestTrait;
}
$test = new TestClass;
echo $test->method(); // do të shfaqë 'trait', sepse trait-i ka përparësi
?>