Traittien abstraktit metodit OOP:ssa PHP:ssä

Traiteissa voidaan jotkin metodit määritellä abstrakteiksi. Tällöin luokan, joka käyttää tätä traitia, on toteutettava tällainen metodi. Samalla traitin abstraktit metodit eivät voi olla private-tyyppisiä.

Katsotaanpa esimerkkiä. Oletetaan, että meillä on seuraava traiti:

TestTrait.php<?php
  trait TestTrait
  {
    public function method1()
    {
      return 1;
    }
    
    abstract public function method2();
  }
?>

Oletetaan, että traitiamme käyttää Test-luokka. Abstraktin metodin olemassaolo traitissa pakottaa ohjelmoijan toteuttamaan sen luokassa, muuten tulee PHP-virhe.

Tehdään Test-luokka yhdessä method2-metodin kanssa:

Test.php<?php
  class Test
  {
    use TestTrait; // käytetään traitia
    
    // Toteutetaan abstrakti metodi:
    public function method2()
    {
      return 2;
    }
  }
  
  new Test;
?>
Задание 1

Kopioi minun TestTrait-traitini koodi ja minun Test-luokkani koodi. Poista luokasta method2-metodi. Varmista, että sen toteutuksen puuttuminen johtaa PHP-virheeseen.