<?php
enum UserStatus: string
{
case Pending = 'P';
case Active = 'A';
case Suspended = 'S';
case CanceledByUser = 'C';
public function label(): string
{
return match ($this) {
self::Pending => 'Π ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ',
self::Active => 'ΠΠΊΡΠΈΠ²Π½ΡΠΉ',
self::Suspended => 'ΠΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΉ',
self::CanceledByUser => 'ΠΡΠΌΠ΅Π½ΡΠ½ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ',
};
}
}
$status = UserStatus::Suspended;
var_dump($status->label());
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠ°ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ²:
UserStatus::Pending,
UserStatus::Active, UserStatus::Suspended
ΠΈΠ»ΠΈ UserStatus::CanceledByUser.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π² ΡΠΈΠ³Π½Π°ΡΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Ρ ΡΠΈΠΏΠΎΠΌ UserStatus
ΡΠ°Π·ΡΠ΅ΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΈ ΡΠ΅ΡΡΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠΎΡΠΊΠ°.
ΠΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΈΠ· ΡΠ΅ΡΡΡΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΌΠ΅ΡΠΎΠ΄ label(), ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠΎΠΊΡ, ΡΠ΄ΠΎΠ±Π½ΡΡ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ.
ΠΡΠ° ΡΡΡΠΎΠΊΠ° Π½Π΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΡΡΠΎΠΊΠΈ ΡΠΎ ΡΠΊΠ°Π»ΡΡΠ½ΡΠΌ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠΎΠΌ Β«ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈΒ», ΠΊΠΎΡΠΎΡΡΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
Ρ
ΡΠ°Π½ΡΡ Π² ΠΏΠΎΠ»Π΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
ΠΈΠ»ΠΈ Π²ΡΠ²ΠΎΠ΄ΡΡ ΠΊΠ°ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π²ΡΠΏΠ°Π΄Π°ΡΡΠ΅Π³ΠΎ ΡΠΏΠΈΡΠΊΠ° Π² HTML-ΡΠΎΡΠΌΠ΅.
<?php
enum UserStatus: string
{
case Pending = 'P';
case Active = 'A';
case Suspended = 'S';
case CanceledByUser = 'C';
public function label(): string
{
return match($this) {
self::Pending => 'Π ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ',
self::Active => 'ΠΠΊΡΠΈΠ²Π½ΡΠΉ',
self::Suspended => 'ΠΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΉ',
self::CanceledByUser => 'ΠΡΠΌΠ΅Π½ΡΠ½ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ',
};
}
}
foreach (UserStatus::cases() as $case) {
printf(
"<option value=\"%s\">%s</option>\n",
htmlentities($case->value),
htmlentities($case->label())
);
}