值列表

纯枚举和支持枚举都实现了一个名为 UnitEnum 的内部接口。 UnitEnum 包含一个静态方法 cases()cases() 返回一个按声明顺序排列的所有定义的 Case 的打包数组。

<?php

Suit
::cases();
// 输出: [Suit::Hearts, Suit::Diamonds, Suit::Clubs, Suit::Spades]
?>

在枚举上手动定义一个 cases() 方法会导致致命错误。

添加注释

用户贡献的注释 2 个注释

theking2 at king dot ma
2 年前
由于 ::cases() 创建了一个可迭代对象,因此可以在 foreach 循环中使用它。结合支持枚举,这可以生成非常简洁且易读的代码

<?php
/** 内容安全策略指令 */
enum CspDirective: String {
case Default =
"default-src";
case
Image = "img-src";
case
Font = "font-src";
case
Script = "script-src";
case
Style = "style-src";
}

/** 列出所有 CSP 指令 */
foreach( CspSource::cases() as $directive ) {
echo
$directive-> value . PHP_EOL;
}
?>
结果是
default-src
img-src
font-src
script-src
style-src
ratsimbasitraka at gmail dot com
1 年前
enum Priority {
case Left;
case Right;
}

// 无法作为默认参数使用
public function selectPriorities(array $priorities = Priority::cases()) {
Priority::cases() // 在这里有效
}
To Top