PHP Conference Japan 2024

枚举

(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,则不会对其进行修改。如果将enum转换为array,则会创建一个包含单个name键(对于纯枚举)或包含namevalue键(对于带值的枚举)的数组。所有其他转换类型都将导致错误。

添加注释

用户贡献的注释 1 条注释

46
esdras-schonevald
2 年前
https://gist.github.com/esdras-schonevald/71a6730e6191c5e9c053e2f65b839eec

<?php

declare(strict_types=1);

/**
* 这是一个示例
* 如何使用 Enum 创建自定义异常情况
* 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("错误请求 - 无效方法", 400),
MyExceptionCase::InvalidProperty => parent::__construct("错误请求 - 无效属性", 400),
MyExceptionCase::Timeout => parent::__construct("错误请求 - 超时", 400)
};
}
}

// 测试我的自定义异常类
try {
throw new
MyException(MyExceptionCase::InvalidMethod);
} catch (
MyException $myE) {
echo
$myE->getMessage(); // 错误请求 - 无效方法
}
To Top