Enums.php 767 B

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