PHP OOP-da treýtlar bilen işleýän wagtynda usullaryň prioretiti
Eger klasda we treýtda bir atly usul bar bolsa, onda klasyň usuly treýtyň usulyny üstünlik alar:
<?php
trait TestTrait
{
// Method atly usul:
public function method()
{
return 'treýt';
}
}
class TestClass
{
use TestTrait;
// Şeýle bir method atly usul:
public function method()
{
return 'test';
}
}
$test = new TestClass;
echo $test->method(); // 'test' çykarar - klasyň öz usuly işledi
?>
Eger klas özünde şeýle usula eýe bolmasa, ýöne treýtyň usullarynyň we kakasynyň klassyň usullarynyň atlary arasynda konflikt bar bolsa, onda treýtyň usullary prioretide bolýar:
<?php
trait TestTrait
{
// Method atly usul:
public function method()
{
return 'treýt';
}
}
// Kakasyň klassy:
class ParentClass
{
// Method atly usul:
public function method()
{
return 'kaka';
}
}
// Klas method usulyny kakasyndan miras alýar:
class TestClass extends ParentClass
{
use TestTrait;
}
$test = new TestClass;
echo $test->method(); // 'treýt' çykarar, sebäbi treýt prioretide
?>