0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PHP 列挙型(enum)と値に依存した列挙型(backed enum)

Last updated at Posted at 2022-06-17

概要

  • PHP8.1から追加された列挙型(enum)について定義方法や使い方をまとめてみた。

定義方法(backed enum)

  • クラスのように定義する。

  • 例えば「aaa」と「bbb」の2つの値をstr1、str2としてそれぞれ列挙したいとき下記のように定義する。

    • 列挙型名: StrEnum
    enum StrEnum: string
    {
        case str1 = 'aaa';
        case str2 = 'bbb';
    }
    

列挙した値を呼び出す(backed enum)

  • 下記のように記載することで値を呼び出す事ができる。

    列挙型名::キー名->value
    
  • 今回のStrEnumの「aaa」を取得したい場合下記のように記載する。

    enum StrEnum: string
    {
        case str1 = 'aaa';
        case str2 = 'bbb';
    }
    
    echo StrEnum::str1->value;
    

列挙下キー名を呼び出す(enum, backed enum)

  • 下記のように記載することでキー名を呼び出す事ができる。

    列挙型名::キー名->name
    
  • 今回のStrEnumの「str1」を取得したい場合下記のように記載する。

    enum StrEnum: string
    {
        case str1 = 'aaa';
        case str2 = 'bbb';
    }
    
    echo StrEnum::str1->name;
    

注意点

  • 列挙型は列挙した値(キーやそれに紐づく値)の名前がついたオブジェクト(シングルトンオブジェクト)
    • オブジェクトなので<>では比較できない。これを行うと必ずfalseが返る。

    • 公式によると下記の様になるらしい。

      $a = StrEnum::str1;
      
      $a instanceof StrEnum; // true
      

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?