As ::cases() creates a Iteratable it is possible to use it in a foreach loop. In combination with value backed enum this can result in very compact and very readable code:
<?php
/** Content Security Policy directives */
enum CspDirective: String {
case Default = "default-src";
case Image = "img-src";
case Font = "font-src";
case Script = "script-src";
case Style = "style-src";
}
/** list all CSP directives */
foreach( CspSource::cases() as $directive ) {
echo $directive-> value . PHP_EOL;
}
?>
Which results in:
default-src
img-src
font-src
script-src
style-src
PHP.mk документација
Листа на вредности
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Патека
language.enumerations.listing.php
Локална патека за оваа страница.
Извор
php.net/manual/en
Оригиналниот HTML се реупотребува и локално се стилизира.
Режим
Прокси + превод во позадина
Кодовите, табелите и белешките остануваат читливи во истиот тек.
Референца
language.enumerations.listing.php
Листа на вредности
Референца за `language.enumerations.listing.php` со подобрена типографија и навигација.
Листа на вредности
И двата чисти Enum и Backed Enum имплементираат внатрешен интерфејс наречен
UnitEnum. UnitEnum вклучува статички метод
cases(). cases() враќа спакуван список на сите дефинирани случаи по редослед на декларација.
<?php
Suit::cases();
// Produces: [Suit::Hearts, Suit::Diamonds, Suit::Clubs, Suit::Spades]
?>Рачно дефинирање на cases() методот на Enum ќе резултира со фатална грешка.
Белешки од корисници 2 забелешки
theking2 на king точка ma ¶
3 години пред
anhaia dot gabriel at gmail dot com ¶
пред 1 година
If you want to get all the values of the Enum in a list of `string`, you might do something like this:
<?php
enum MyEnum: string
{
case OPTION_A = 'option_a';
case OPTION_B = 'option_b';
case OPTION_C = 'option_c';
public static function values(): array
{
return array_map(fn ($case) => $case->value, self::cases());
}
}
?>