UserLanguageDTO.php 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <?php
  2. namespace App\DTO;
  3. use App\Http\Requests\UserLanguageRequest;
  4. use App\Enums\UserLanguageSource;
  5. readonly class UserLanguageDTO
  6. {
  7. public function __construct(
  8. public string $language,
  9. ) {
  10. }
  11. public static function fromRequest(UserLanguageRequest $request): self
  12. {
  13. return new self(
  14. language: $request->validated(key: 'language'),
  15. );
  16. }
  17. public static function fromString(string $language): self
  18. {
  19. if (!UserLanguageSource::isValid(value: $language)) {
  20. throw new \InvalidArgumentException(message: 'Invalid language');
  21. }
  22. return new self(
  23. language: $language,
  24. );
  25. }
  26. public static function fromArray(array $data): self
  27. {
  28. return new self(
  29. language: $data['language'],
  30. );
  31. }
  32. public function toArray(): array
  33. {
  34. return [
  35. 'language' => $this->language,
  36. ];
  37. }
  38. public function toString(): string
  39. {
  40. return $this->language;
  41. }
  42. }