Абстрактные методы трейтов в ООП в PHP

В трейтах можно некоторые методы объявлять абстрактными. В этом случае класс, использующий этот трейт, обязан будет реализовать такой метод. При этом абстрактные методы трейта не могут быть приватными.

Давайте посмотрим на примере. Пусть у нас есть вот такой трейт:

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

Пусть наш трейт используется классом Test. Наличие в трейте абстрактного метода обяжет программиста реализовать его в классе, иначе будет ошибка PHP.

Давайте сделаем класс Test месте с методом method2:

Test.php<?php
  class Test
  {
    use TestTrait; // используем трейт
    
    // Реализуем абстрактный метод:
    public function method2()
    {
      return 2;
    }
  }
  
  new Test;
?>
Задание 1

Скопируйте код моего трейта TestTrait и код моего класса Test. Удалите из класса метод method2. Убедитесь в том, что отсутствие его реализации приведет к ошибке PHP.