PHP-ի ՕՕՊ-ում տրեյթների հետ աշխատելիս մեթոդների առաջնահերթությունը
Եթե դասում և տրեյթում կա նույնանուն մեթոդ, ապա դասի մեթոդը կգերակայի տրեյթի մեթոդը:
<?php
trait TestTrait
{
// Method անունով մեթոդ:
public function method()
{
return 'trait';
}
}
class TestClass
{
use TestTrait;
// Նույն մեթոդը method անունով:
public function method()
{
return 'test';
}
}
$test = new TestClass;
echo $test->method(); // կարտածի 'test' - աշխատել է դասի սեփական մեթոդը
?>
Եթե դասն ինքը չունի այդպիսի մեթոդ, բայց կա տրեյթի մեթոդների և ծնողական դասի մեթոդների անվանումների հակասություն, ապա տրեյթի մեթոդներն ունեն առաջնահերթություն:
<?php
trait TestTrait
{
// Method անունով մեթոդ:
public function method()
{
return 'trait';
}
}
// Ծնողական դաս:
class ParentClass
{
// Method անունով մեթոդ:
public function method()
{
return 'parent';
}
}
// Դասը method մեթոդը ժառանգում է ծնողից:
class TestClass extends ParentClass
{
use TestTrait;
}
$test = new TestClass;
echo $test->method(); // կարտածի 'trait', քանի որ տրեյթն ունի առաջնահերթություն
?>