Métodos Abstratos em Traits na OOP em PHP

Em traits, é possível declarar alguns métodos como abstratos. Nesse caso, a classe que utilizar essa trait será obrigada a implementar tal método. No entanto, os métodos abstratos de uma trait não podem ser privados.

Vamos ver um exemplo. Suponha que temos a seguinte trait:

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

Suponha que nossa trait seja usada pela classe Test. A presença de um método abstrato na trait obrigará o programador a implementá-lo na classe, caso contrário, ocorrerá um erro no PHP.

Vamos criar a classe Test junto com o método method2:

Test.php<?php
  class Test
  {
    use TestTrait; // usando a trait
    
    // Implementamos o método abstrato:
    public function method2()
    {
      return 2;
    }
  }
  
  new Test;
?>
Задание 1

Copie o código da minha trait TestTrait e o código da minha classe Test. Remova da classe o método method2. Certifique-se de que a ausência de sua implementação levará a um erro do PHP.