PHP OOP හි traits සමඟ වැඩ කිරීමේදී ක්රම ප්රතිප්රිය
වර්ගයක සහ trait එකක එකම නමින් ක්රමයක් පවතී නම්, වර්ගයේ ක්රමය trait එකේ ක්රමය අතිලේඛනය කරයි:
<?php
trait TestTrait
{
// method යන නමින් ක්රමය:
public function method()
{
return 'trait';
}
}
class TestClass
{
use TestTrait;
// එකම නමින් ක්රමය:
public function method()
{
return 'test';
}
}
$test = new TestClass;
echo $test->method(); // 'test' ප්රතිදානය කරයි - වර්ගයේම ක්රමය ක්රියාත්මක විය
?>
වර්ගයටම එවැනි ක්රමයක් නොමැති නමුත් trait එකේ ක්රම සහ මූලික වර්ගයේ ක්රම යන නම් ගැටුමක් පවතින විට, trait ක්රම ප්රතිප්රිය ලබා ගනී:
<?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' ප්රතිදානය කරයි, මන්ද trait එකට ප්රතිප්රිය ඇත
?>