php – match 與 enum 用法
Match 用法
先了解 match (8.0 支援) 的應用,後面可以搭配 enum。match 與 switch 用法類似,用於多個項目比較
$food = "cake";
$description = match ($food) {
"cake" => "蛋糕一份",
"cafe" => "咖啡一杯",
};
echo $description; // 蛋糕一份
進階一點的可以是
$price = function (int $hour){
// 設定 true 讓左側的 單一條件表達式 可以使用變數做邏輯判斷
return match (true) {
(11 <= $hour and $hour <= 13) => "399",
(14 <= $hour and $hour <= 17) => "299",
(18 <= $hour and $hour <= 20) => "499",
default => "不販售"
};
};
echo $price(7); // 不販售
echo $price(12); // 399
echo $price(15); // 299
echo $price(19); // 499
Enum
Enum (8.1 支援) ,可以配合 match 做到這樣的轉換
enum Project: string
{
case ID = "001";
case CODE = "HappyNewYear";
// 可以做你想要的轉換
public function desc(): string
{
return match ($this) {
self::ID => "編號",
self::CODE => "happy-new-year"
};
}
}
echo Project::ID->name; // ID
echo Project::CODE->value; // HappyNewYear
echo Project::CODE->desc(); // happy-new-year