Quantcast
Channel: PHP8タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 521

PHP8.1でenumが使えるようになる!

$
0
0
PHP8.1からenumが使えるようになります PHP8.1は2021年11月25日リリース予定です。 追加される新機能は以下を参考 https://stitcher.io/blog/new-in-php-81 その中で注目の一つはenumが追加されることかなと思います。 実際にどんな感じに使えるのか? enumの宣言 まずは以下のようにenumを宣言します。 enum Status { case DRAFT; case PUBLISHED; case ARCHIVED; } 宣言したenumを利用する 以下のようにコンストラクターでenumを引数として利用します。 class BlogPost { public function __construct( public Status $status, ) {} } 先ほど作成したBlogPostのインスタンスを作成します。 この際に、作成したenumのStatusを引数として与えます。 Status::DRAFTのように記述します。 $post = new BlogPost(Status::DRAFT); enumでメソッドを定義する enumでは、classを同じようにメソッドも定義できます。 今回はcolor()というメソッドを作成して、enumとマッチしたものを指定した文字列として返します。 enum Status { case DRAFT; case PUBLISHED; case ARCHIVED; public function color(): string { return match($this) { Status::DRAFT => 'grey', Status::PUBLISHED => 'green', Status::ARCHIVED => 'red', }; } } 定義したメソッドは以下のように利用します。 この場合、'red'が返却値となります。 $status = Status::ARCHIVED; $status->color(); // 'red' interfacesの実装 enumはclassと同じようにinterfacesの実装をすることも可能です。 以下のようにHasColorというinterfacesが定義されていたとします。 interface HasColor { public function color(): string; } その際には、classと同様にimplementsで実装することができます。 enum Status implements HasColor { case DRAFT; case PUBLISHED; case ARCHIVED; public function color(): string { /* … */ } } PHP8.1ではenumの追加以外にも魅力的なアップデートが多そうです。 参考

Viewing all articles
Browse latest Browse all 521

Trending Articles