列挙型 / Enum

(PHP 8 >= 8.1.0)

列挙型ぎåŸēį¤Ž

列挙型は、クナ゚やクナ゚厚数ãĢ寞しãĻ、さらãĢåˆļ限を加えたもぎです。 ある型ãĢ寞しãĻã€å–ã‚Šåž—ã‚‹å€¤ãŽé™ã‚‰ã‚ŒãŸé›†åˆã‚’åŽšįžŠã™ã‚‹æ–šæŗ•ã‚’æäž›ã—ãžã™ã€‚

<?php
enum Suit
{
case
Hearts;
case
Diamonds;
case
Clubs;
case
Spades;
}

function
do_stuff(Suit $s)
{
// ...
}

do_stuff(Suit::Spades);
?>

厌全ãĒčĒŦ明は、 列挙型(Enum) ã‚’å‚į…§ãã ã•ã„ã€‚

ã‚­ãƒŖã‚šãƒˆ

列挙型を object ãĢã‚­ãƒŖã‚šãƒˆã—ãĻも、値は変更されぞせん。 列挙型を array ãĢã‚­ãƒŖã‚šãƒˆã™ã‚‹ã¨ã€ name というキãƒŧだけ(Pure Enum ぎ場合) をもつ配列か、 name と value というキãƒŧ(Backed Enum ぎ場合) ã‚’æŒã¤é…åˆ—ãŒį”Ÿæˆã•ã‚Œãžã™ã€‚ それäģĨå¤–ãŽã‚­ãƒŖã‚šãƒˆã‚’čĄŒãŖãĻも、エナãƒŧがį™ēį”Ÿã—ãžã™ã€‚

īŧ‹add a note

User Contributed Notes 1 note

up
53
esdras-schonevald Âļ
4 years ago
https://gist.github.com/esdras-schonevald/71a6730e6191c5e9c053e2f65b839eec

<?php

declare(strict_types=1);

/**
 * This is a sample
 * How to use Enum to create a custom exception cases
 * PHP 8.1^
 */

enum MyExceptionCase {
    case InvalidMethod;
    case InvalidProperty;
    case Timeout;
}

class MyException extends Exception {
    function __construct(private MyExceptionCase $case){
        match($case){
            MyExceptionCase::InvalidMethod      =>    parent::__construct("Bad Request - Invalid Method", 400),
            MyExceptionCase::InvalidProperty    =>    parent::__construct("Bad Request - Invalid Property", 400),
            MyExceptionCase::Timeout            =>    parent::__construct("Bad Request - Timeout", 400)
        };
    }
}

// Testing my custom exception class
try {
    throw new MyException(MyExceptionCase::InvalidMethod);
} catch (MyException $myE) {
    echo $myE->getMessage();  // Bad Request - Invalid Method
}