Абстрактные методҳои хусусиятҳо (trait) дар ООП дар PHP
Дар хусусиятҳо (trait) метавон баъзе методҳоро абстрактӣ эълон кард. Дар ин ҳолат, классе, ки ин хусусиятро истифода мебарад, бояд чунин методро амалӣ кунад. Дар ин ҳолат, методҳои абстрактии хусусият наметавонанд хусусӣ (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 мешавад.