Absztrakt metódusok traitokban az OOP-ban PHP-ben
A traitekben néhány metódust absztraktnak lehet deklarálni. Ebben az esetben az ezt a traitet használó osztály köteles lesz megvalósítani egy ilyen metódust. Ebben az esetben a trait absztrakt metódusai nem lehetnek privátak.
Nézzük egy példán. Tegyük fel, hogy van egy ilyen traitünk:
<?php
trait TestTrait
{
public function method1()
{
return 1;
}
abstract public function method2();
}
?>
Tegyük fel, hogy a Test osztály használja a traitünket.
Az absztrakt metódus jelenléte a traitben kötelezővé teszi
a programozó számára, hogy valósítsa meg az osztályban, különben
PHP hiba lép fel.
Készítsük el a Test osztályt a
method2 metódussal együtt:
<?php
class Test
{
use TestTrait; // trait használata
// Absztrakt metódus megvalósítása:
public function method2()
{
return 2;
}
}
new Test;
?>
Másolja a TestTrait trait kódját
és a Test osztály kódját. Távolítsa el
az osztályból a method2 metódust. Győződjön meg arról,
hogy a megvalósítás hiánya PHP hibához vezet.