Re: RFC Karma request: Enums with Associated Values for cases
| From: | Larry Garfield | Date: | Wed, 04 Feb 2026 14:35:18 +0000 |
| Subject: | Re: RFC Karma request: Enums with Associated Values for cases | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-130007@lists.php.net to get a copy of this message | ||
On Wed, Feb 4, 2026, at 6:16 AM, Jordi Kroon wrote:
> Hello,
>
> I would like to get RFC Karma for my wiki account. My username is:
> jkroon.
> The proposed RFC will introduce Enums with Associated Values for cases
> and is inspired by Rust and Swift.
>
> For example it would allow for the following:
>
> ```
> <?php
>
> enum ApiResult {
> case Success(string $data, int $statusCode);
> case Failure(Throwable $error, ?int $statusCode);
> }
>
> function handle(ApiResult $r): string {
> return match ($r) {
> ApiResult::Success => 'OK ' . $r->statusCode . PHP_EOL,
> ApiResult::Failure => 'NO ' . ($r->statusCode ?? 'unknown') .
> PHP_EOL,
> };
> }
>
> echo handle(ApiResult::Success('All good', 200));
> echo handle(ApiResult::Failure(new Exception('Bad request'), 400));
> echo handle(ApiResult::Failure(new Exception('Server error'), null));
> ```
>
> Regards,
> Jordi
Please be aware that there are already plans for this feature (RFC is a bit dated for now so
don't take literally):
https://wiki.php.net/rfc/tagged_unions
Which is currently blocked pending pattern matching, currently in discussion:
https://wiki.php.net/rfc/pattern-matching
I'm regularly around the phpc.chat Discord if you want to talk about it more directly. Right
now the main blocker is time availability, and getting pattern matching done. (See it's thread
for the currently open questions.)
--Larry Garfield