php – match 與 enum 用法
Match 用法
先了解 match (8.0 支援) 的應用,後面可以搭配 enum。match 與 switch 用法類似,用於多個項目比較
1 2 3 4 5 6 7 8 9 10 |
$food = "cake"; $description = match ($food) { "cake" => "蛋糕一份", "cafe" => "咖啡一杯", }; echo $description; // 蛋糕一份 |
進階一點的可以是
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$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 做到這樣的轉換
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
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 |