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:

TestTrait.php<?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:

Test.php<?php
  class Test
  {
    use TestTrait; // trait'i kullanıyoruz
    
    // Soyut metodu uyguluyoruz:
    public function method2()
    {
      return 2;
    }
  }
  
  new Test;
?>
Задание 1

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.