Abstraktsed meetodid trait'ides OOP-s PHP-s
Trait'ides saab mõned meetodid deklareerida abstraktsetena. Sellisel juhul peab klass, mis kasutab seda trait'i, implementeerima sellise meetodi. Samas ei saa trait'i abstraktsed meetodid olla privaatsed.
Vaatame näidet. Oletame, et meil on järgmine trait:
<?php
trait TestTrait
{
public function method1()
{
return 1;
}
abstract public function method2();
}
?>
Oletame, et meie trait'i kasutab klass Test.
Abstraktse meetodi olemasolu trait'is sunnib
programmeerijat seda implementeerima klassis, vastasel
juhul tekib PHP viga.
Teeme klassi Test koos
meetodiga method2:
<?php
class Test
{
use TestTrait; // kasutame trait'i
// Implementeerime abstraktse meetodi:
public function method2()
{
return 2;
}
}
new Test;
?>
Kopeerige minu trait'i TestTrait kood
ja minu klassi Test kood. Eemaldage
klassist meetod method2. Veenduge,
et selle implementeerimata jätmine viib
PHP veani.