Abstraktūs treitų metodai OOP PHP
Treituose galima kai kuriuos metodus deklaruoti abstrakčiais. Tokiu atveju klasė, naudojanti šį treitą, privalės implementuoti tokį metodą. Be to, abstraktūs treito metodai negali būti privatūs.
Pažiūrėkime pavyzdžiu. Tarkime, mes turime šį treitą:
<?php
trait TestTrait
{
public function method1()
{
return 1;
}
abstract public function method2();
}
?>
Tarkime, mūsų treitą naudoja klasė Test.
Abstraktaus metodo buvimas treite privers
programuotoją jį implementuoti klasėje, kitaip
bus PHP klaida.
Sukurkime klasę Test kartu su
metodu method2:
<?php
class Test
{
use TestTrait; // naudojame treitą
// Implementuojame abstraktų metodą:
public function method2()
{
return 2;
}
}
new Test;
?>
Nukopijuokite mano treito TestTrait kodą
ir mano klasės Test kodą. Ištrinkite iš
klasės metodą method2. Įsitikinkite,
kad jo implementacijos nebuvimas sukels
PHP klaidą.