Abstrakta metoder i traits i OOP i PHP

I traits kan vissa metoder deklareras abstrakta. I det fallet kommer klassen som använder detta trait att vara tvungen att implementera en sådan metod. Samtidigt kan abstrakta metoder i traits inte vara privata.

Låt oss titta på ett exempel. Låt oss säga att vi har ett trait som ser ut så här:

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

Låt oss säga att vårt trait används av klassen Test. Närvaron av en abstrakt metod i traitet kommer att tvinga programmeraren att implementera den i klassen, annars kommer ett PHP-fel att uppstå.

Låt oss skapa klassen Test tillsammans med metoden method2:

Test.php<?php
  class Test
  {
    use TestTrait; // använder traiten
    
    // Implementerar den abstrakta metoden:
    public function method2()
    {
      return 2;
    }
  }
  
  new Test;
?>
Задание 1

Kopiera koden för mitt trait TestTrait och koden för min klass Test. Ta bort metoden method2 från klassen. Se till att frånvaron av dess implementering leder till ett PHP-fel.