PHP OOP-де трейттердің абстракті әдістері
Трейттерде кейбір әдістерді абстракті ретінде жариялауға болады. Бұл жағдайда осы трейтті қолданатын класс мұндай әдісті жүзеге асыруға міндетті болады. Сонымен бірге трейттің абстракті әдістері жеке (private) болуы мүмкін емес.
Мысал арқылы қарастырайық. Бізде келесі трейт бар делік:
<?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 қатесіне әкелетініне көз жеткізіңіз.