Abstrakta metoder i traits i OOP i PHP
I traits kan vissa metoder deklareras abstrakta. I det fallet kommer klassen som använder detta trait att vara tvungen att implementera en sådan metod. Samtidigt kan abstrakta metoder i traits inte vara privata.
Låt oss titta på ett exempel. Låt oss säga att vi har ett trait som ser ut så här:
<?php
trait TestTrait
{
public function method1()
{
return 1;
}
abstract public function method2();
}
?>
Låt oss säga att vårt trait används av klassen Test.
Närvaron av en abstrakt metod i traitet kommer att tvinga
programmeraren att implementera den i klassen, annars
kommer ett PHP-fel att uppstå.
Låt oss skapa klassen Test tillsammans med
metoden method2:
<?php
class Test
{
use TestTrait; // använder traiten
// Implementerar den abstrakta metoden:
public function method2()
{
return 2;
}
}
new Test;
?>
Kopiera koden för mitt trait TestTrait
och koden för min klass Test. Ta bort
metoden method2 från klassen. Se till
att frånvaron av dess implementering leder
till ett PHP-fel.