request = app('request'); $this->response = app('response'); $this->view = app('view'); $this->security = app('security'); } /** * Get request instance */ protected function request(): Request { return $this->request; } /** * Get response instance */ protected function response(): Response { return $this->response; } /** * Get underlying view engine instance */ protected function viewEngine(): View { return $this->view; } /** * Get security instance */ protected function security(): Security { return $this->security; } /** * Render a view */ protected function view(string $view, array $data = []): string { return $this->view->render($view, $data); } /** * Return JSON response */ protected function json(array $data, int $status = 200): Response { return $this->response->json($data, $status); } /** * Redirect to URL */ protected function redirect(string $url, int $status = 302): void { $this->response->redirect($url, $status); } /** * Return error response */ protected function error(string $message, int $status = 400): Response { return $this->response->json(['error' => $message], $status); } /** * Return success response */ protected function success(array $data = [], string $message = 'Success'): Response { return $this->response->json([ 'success' => true, 'message' => $message, 'data' => $data ]); } /** * Validate request data */ protected function validate(array $data, array $rules): array { $errors = []; foreach ($rules as $field => $rule) { $value = $data[$field] ?? null; if (str_contains($rule, 'required') && empty($value)) { $errors[$field] = "The {$field} field is required."; } if (str_contains($rule, 'email') && !filter_var($value, FILTER_VALIDATE_EMAIL)) { $errors[$field] = "The {$field} field must be a valid email address."; } if (str_contains($rule, 'min:') && strlen($value) < (int)substr($rule, 4)) { $min = substr($rule, 4); $errors[$field] = "The {$field} field must be at least {$min} characters."; } } return $errors; } }