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 хатосига олиб келишига ишонч ҳосил килинг.