array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'de', ), 'this' => array ( 0 => 'language.enumerations.traits.php', 1 => 'Traits', ), 'up' => array ( 0 => 'language.enumerations.php', 1 => 'Aufzählungen (Enum)', ), 'prev' => array ( 0 => 'language.enumerations.constants.php', 1 => 'Aufzählungen und Konstanten', ), 'next' => array ( 0 => 'language.enumerations.expressions.php', 1 => 'Enum-Werte in konstanten Ausdrücken', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'de', 'path' => 'language/enumerations.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
Enums können Traits verwenden, die sich dann genauso verhalten wie in Klassen. Hierbei ist zu beachten, dass die in einer Enum verwendeten Traits keine Eigenschaften enthalten dürfen, sondern nur Methoden und statische Methoden. Ein Trait mit Eigenschaften führt zu einem fatalen Fehler.
<?php
interface Colorful
{
public function color(): string;
}
trait Rectangle
{
public function shape(): string {
return "Rectangle";
}
}
enum Suit implements Colorful
{
use Rectangle;
case Hearts;
case Diamonds;
case Clubs;
case Spades;
public function color(): string
{
return match($this) {
Suit::Hearts, Suit::Diamonds => 'Red',
Suit::Clubs, Suit::Spades => 'Black',
};
}
}
?>