PHP'de OOP'de Trait Soyut Metotları
Trait'lerde bazı metotlar soyut olarak bildirilebilir. Bu durumda, bu trait'i kullanan sınıf, böyle bir metodu uygulamak zorunda olacaktır. Aynı zamanda, bir trait'in soyut metotları private olamaz.
Bir örnek üzerinden inceleyelim. Diyelim ki şu trait'e sahibiz:
<?php
trait TestTrait
{
public function method1()
{
return 1;
}
abstract public function method2();
}
?>
Diyelim ki trait'imiz Test sınıfı tarafından kullanılıyor.
Trait içinde soyut bir metodun bulunması, programcıyı bu metodu
sınıf içinde uygulamak zorunda bırakacaktır, aksi takdirde
PHP hatası oluşacaktır.
Şimdi Test sınıfını method2 metoduyla birlikte oluşturalım:
<?php
class Test
{
use TestTrait; // trait'i kullanıyoruz
// Soyut metodu uyguluyoruz:
public function method2()
{
return 2;
}
}
new Test;
?>
Benim TestTrait trait'imin ve Test sınıfımın kodunu kopyalayın.
Sınıftan method2 metodunu silin. Uygulamasının olmamasının
PHP hatasına yol açtığını gözlemleyin.