由於 ::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