Тағйир додани ҳуқуқҳои дастрасӣ ба усулҳои трейт дар ООП дар PHP
Дар дохили трейт шумо метавонед аз ҳар гуна модификатори
дастрасӣ барои усулҳо (яъне public, private
ё protected) истифода баред. Аммо, агар зарур бошад,
дар худи синф ин модификаторро ба дигаре тағйир додан мумкин аст.
Барои ин дар бадани use пас аз
калимаи калидӣ as бояд модификатори навро
муайян кунед.
Биёед дар мисол назарем. Фарз мекунем, ки мо трейти зеринро бо усули хусусӣ дорем:
<?php
trait TestTrait
{
private function method()
{
return '!!!';
}
}
?>
Трейти худро ба синф пайваст мекунем:
<?php
class Test
{
use TestTrait;
}
?>
Усулро дар синф ба умумӣ табдил медиҳем:
<?php
class Test
{
use TestTrait {
TestTrait::method as public;
}
}
?>
Коркарди усули умумӣ аз беруни синфро месанҷем:
<?php
$test = new Test;
echo $test->method(); // '!!!' чоп мекунад
?>