content = $content; $this->status = $status; $this->headers = $headers; } public static function json(array $data, int $status = 200): self { return new self( json_encode($data, JSON_PRETTY_PRINT), $status, ['Content-Type' => 'application/json'] ); } public static function redirect(string $url): self { return new self('', 302, ['Location' => $url]); } public static function notFound(string $message = 'Not found'): self { return new self($message, 404); } public static function serverError(string $message = 'Server error'): self { return new self($message, 500); } public function send(): void { http_response_code($this->status); foreach ($this->headers as $name => $value) { header($name . ': ' . $value); } echo $this->content; } public function content(): string { return $this->content; } public function status(): int { return $this->status; } }