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:
<?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:
<?php
class Test
{
use TestTrait; // usando a trait
// Implementamos o método abstrato:
public function method2()
{
return 2;
}
}
new Test;
?>
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.