ResponseData.php 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. namespace App\Models\DTO;
  3. use Illuminate\Contracts\Support\Responsable;
  4. use Illuminate\Cookie\CookieJar;
  5. use Illuminate\Http\JsonResponse;
  6. use Symfony\Component\HttpFoundation\Cookie;
  7. use Exception;
  8. class ResponseData implements Responsable
  9. {
  10. public int $success = 1;
  11. public string $code = "200";
  12. public string $message = "";
  13. public CookieJar|Cookie|null $cookie = null;
  14. public static function fromException(Exception $e): static
  15. {
  16. $res = new static();
  17. $res->success = 0;
  18. $res->code = $e->getCode();
  19. $res->message = $e->getMessage();
  20. return $res;
  21. }
  22. public function cookie($cookie): CookieJar|Cookie
  23. {
  24. return $this->cookie = $cookie;
  25. }
  26. public function __set($name, $value)
  27. {
  28. $this->{$name} = $value;
  29. }
  30. public function __get($name): mixed
  31. {
  32. return ($this->{$name} ?? null);
  33. }
  34. public function toResponse($request): JsonResponse
  35. {
  36. $response = response()->json($this);
  37. if ($this->cookie) {
  38. $response->cookie($this->cookie);
  39. }
  40. return $response;
  41. }
  42. }