$data */ protected function json(Response $response, array $data, int $status = 200): Response { $response->getBody()->write( (string) json_encode($data, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT) ); return $response ->withHeader('Content-Type', 'application/json') ->withStatus($status); } /** * The parsed JSON request body as an array (empty when absent or not an object). * * @return array */ protected function body(Request $request): array { $parsed = $request->getParsedBody(); return is_array($parsed) ? $parsed : []; } /** * The authenticated user attached by AuthMiddleware. * * @return array{id: int, email: string, email_verified_at: string|null, created_at: string} */ protected function user(Request $request): array { /** @var array{id: int, email: string, email_verified_at: string|null, created_at: string} $user */ $user = $request->getAttribute('user'); return $user; } }