Traittien abstraktit metodit OOP:ssa PHP:ssä
Traiteissa voidaan jotkin metodit määritellä abstrakteiksi. Tällöin luokan, joka käyttää tätä traitia, on toteutettava tällainen metodi. Samalla traitin abstraktit metodit eivät voi olla private-tyyppisiä.
Katsotaanpa esimerkkiä. Oletetaan, että meillä on seuraava traiti:
<?php
trait TestTrait
{
public function method1()
{
return 1;
}
abstract public function method2();
}
?>
Oletetaan, että traitiamme käyttää Test-luokka.
Abstraktin metodin olemassaolo traitissa pakottaa
ohjelmoijan toteuttamaan sen luokassa, muuten
tulee PHP-virhe.
Tehdään Test-luokka yhdessä
method2-metodin kanssa:
<?php
class Test
{
use TestTrait; // käytetään traitia
// Toteutetaan abstrakti metodi:
public function method2()
{
return 2;
}
}
new Test;
?>
Kopioi minun TestTrait-traitini koodi
ja minun Test-luokkani koodi. Poista
luokasta method2-metodi. Varmista,
että sen toteutuksen puuttuminen johtaa
PHP-virheeseen.