1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
<?php
namespace Illuminate\Tests\Database;
use Illuminate\Contracts\Support\Arrayable;
enum StringStatus: string
{
case draft = 'draft';
case pending = 'pending';
case done = 'done';
}
enum IntegerStatus: int
{
case draft = 0;
case pending = 1;
case done = 2;
}
enum ArrayableStatus: string implements Arrayable
{
case pending = 'pending';
case done = 'done';
public function description(): string
{
return match ($this) {
self::pending => 'pending status description',
self::done => 'done status description'
};
}
public function toArray()
{
return [
'name' => $this->name,
'value' => $this->value,
'description' => $this->description(),
];
}
}
|