Abstrakcyjne metody traitów w OOP w PHP
W traitach niektóre metody można deklarować jako abstrakcyjne. W takim przypadku klasa używająca tego traita będzie zobowiązana do zaimplementowania takiej metody. Jednocześnie abstrakcyjne metody traita nie mogą być prywatne.
Spójrzmy na przykład. Załóżmy, że mamy taki trait:
<?php
trait TestTrait
{
public function method1()
{
return 1;
}
abstract public function method2();
}
?>
Załóżmy, że nasz trait jest używany przez klasę Test.
Obecność metody abstrakcyjnej w traicie zobliguje
programistę do jej zaimplementowania w klasie, w przeciwnym razie
wystąpi błąd PHP.
Stwórzmy klasę Test razem z
metodą method2:
<?php
class Test
{
use TestTrait; // używamy traita
// Implementujemy metodę abstrakcyjną:
public function method2()
{
return 2;
}
}
new Test;
?>
Skopiuj kod mojego traita TestTrait
i kod mojej klasy Test. Usuń z
klasy metodę method2. Upewnij się,
że brak jej implementacji prowadzi
do błędu PHP.