Apstraktne metode trejtova u OOP-u u PHP-u

U trejtovima se neke metode mogu deklarisati kao apstraktne. U tom slučaju, klasa koja koristi ovaj trejt, moraće da implementira takvu metodu. Pritom, apstraktne metode trejta ne mogu biti privatne.

Pogledajmo na primeru. Pretpostavimo da imamo ovakav trejt:

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

Pretpostavimo da naš trejt koristi klasa Test. Prisustvo apstraktne metode u trejtu će obavezati programera da je implementira u klasi, inače će doći do greške u PHP-u.

Napravimo klasu Test zajedno sa metodom method2:

Test.php<?php
  class Test
  {
    use TestTrait; // koristimo trejt
    
    // Implementiramo apstraktnu metodu:
    public function method2()
    {
      return 2;
    }
  }
  
  new Test;
?>
Задание 1

Kopirajte kod mog trejta TestTrait i kod moje klase Test. Uklonite iz klase metod method2. Uverite se da odsustvo njegove implementacije dovodi do greške u PHP-u.