TranslationResponseDTO.php 903 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. <?php
  2. /**
  3. * 使用方式
  4. * use App\DTO\LLMTranslation\TranslationResponseDTO;
  5. $dto = TranslationResponseDTO::fromArray($response);
  6. dd($dto->data[0]->content);
  7. */
  8. namespace App\DTO\LLMTranslation;
  9. use App\DTO\BaseDTO;
  10. readonly class TranslationResponseDTO extends BaseDTO
  11. {
  12. /**
  13. * @param TranslationItemDTO[] $data
  14. */
  15. public function __construct(
  16. public bool $success,
  17. public string $error,
  18. public array $data,
  19. public TranslationMetaDTO $meta,
  20. ) {}
  21. public static function fromArray(array $payload): self
  22. {
  23. return new self(
  24. success: $payload['success'],
  25. error: '',
  26. data: array_map(
  27. fn(array $item) => TranslationItemDTO::fromArray($item),
  28. $payload['data']
  29. ),
  30. meta: TranslationMetaDTO::fromArray($payload['meta']),
  31. );
  32. }
  33. }