PHP OOP'de Trait Metotlarına Erişim İzinlerinde Değişiklikler
Bir trait içinde metotlar için herhangi bir erişim değiştiricisi
kullanılabilir (yani public, private
veya protected). Ancak gerekirse,
sınıfın içinde bu değiştirici başka bir değiştiriciyle
değiştirilebilir. Bunun için use gövdesi içinde
as anahtar kelimesinden sonra
yeni erişim değiştiricisi belirtilmelidir.
Bir örnek üzerinden inceleyelim. Private metoda sahip şu trait'imiz olduğunu varsayalım:
<?php
trait TestTrait
{
private function method()
{
return '!!!';
}
}
?>
Trait'imizi bir sınıfa bağlayalım:
<?php
class Test
{
use TestTrait;
}
?>
Şimdi sınıf içinde metodu public olarak değiştirelim:
<?php
class Test
{
use TestTrait {
TestTrait::method as public;
}
}
?>
Public metodun sınıf dışından çalışmasını test edelim:
<?php
$test = new Test;
echo $test->method(); // '!!!' yazdıracak
?>