Абстрактыя метады трэйтаў у ААП у PHP
У трэйтах можна некаторыя метады аб'яўляць абстрактнымі. У гэтым выпадку клас, які выкарыстоўвае гэты трэйт, абавязаны будзе рэалізаваць такі метад. Пры гэтым абстрактыя метады трэйта не могуць быць прыватнымі.
Давайце паглядзім на прыкладзе. Хай у нас ёсць вось такі трэйт:
<?php
trait TestTrait
{
public function method1()
{
return 1;
}
abstract public function method2();
}
?>
Хай наш трэйт выкарыстоўваецца класам Test
.
Наяўнасць у трэйце абстрактнага метаду абавязае
праграміста рэалізаваць яго ў класе, інакш
будзе памылка PHP.
Давайце зробім клас Test
разам з
метадам method2
:
<?php
class Test
{
use TestTrait; // выкарыстоўваем трэйт
// Рэалізуем абстрактны метад:
public function method2()
{
return 2;
}
}
new Test;
?>
Скапіюйце код майго трэйта TestTrait
і код майго класа Test
. Выдаліце з
класа метад method2
. Пераканайцеся ў
тым, што адсутнасць яго рэалізацыі прывядзе
да памылкі PHP.