Hace unos días, aprendí a construir un enrutador básico que asigna URL a controladores. Ahora necesito mejorarlo para construir un enrutador mejor con funcionalidad avanzada. Para construir un mejor enrutador que funcione con entradas ocultas, primero que nada elimine el archivo básico router.php del proyecto y cree uno nuevo. Empecemos.
Necesitamos crear un enrutador mejor que asigne de manera eficiente las URL a controladores o acciones específicas, permitiendo que nuestra aplicación maneje las solicitudes y las enrute a los controladores apropiados.
La mejor capacidad del enrutador para trabajar con entradas ocultas permite la eliminación segura de notas al pasar el ID de la nota al controlador sin exponerlo en la URL, lo que evita la interferencia del usuario.
Para crear un archivo de enrutador, tenemos que inicializar la clase de enrutador con un espacio de nombres, en este caso, Core.
Funciones públicas (parámetros comunes)
A medida que se construye la clase de enrutador, tenemos que definir funciones públicas en ella y todas tienen los mismos parámetros como obtener, publicar, eliminar, parchear y colocar como rutas esenciales que ayudan a nuestro sitio web a determinar qué hacer cuando alguien visita una determinada página. Estas funciones tienen los mismos parámetros, lo que les permite realizar las mismas acciones.
public function get($uri, $controller) { $this->add('GET', $uri, $controller); } public function post($uri, $controller) { $this->add('POST', $uri, $controller); } public function delete($uri, $controller) { $this->add('DELETE', $uri, $controller); } public function patch($uri, $controller) { $this->add('PATCH', $uri, $controller); } public function put($uri, $controller) { $this->add('PUT', $uri, $controller); }Agregar método
Como todas las funciones públicas tienen los mismos parámetros, usamos el método add y le damos los mismos parámetros y solo para llamar esto en otras funciones. Se utiliza para agregar una nueva ruta al mapa de enrutamiento, tomando tres parámetros: el método de solicitud, el patrón de URI que debe coincidir y el archivo del controlador para manejar la solicitud.
public function add($method, $uri, $controller) { $this->routes[] = [ 'uri' => $uri, 'controller' => $controller, 'method' => $method ]; }Método de ruta
Aquí, definimos el método de ruta para determinar la respuesta de nuestra aplicación a una URL determinada, asignándola al controlador correspondiente para manejar la solicitud.
public function route($uri, $method) { foreach ($this->routes as $route) { if ($route['uri'] === $uri && $route['method'] === strtoupper($method)) { return require base_path($route['controller']); } } $this->abort(); }Función strtoupper
En el método de ruta, utilizamos la función strtoupper para convertir una cadena a mayúsculas, asegurando una coincidencia que no distinga entre mayúsculas y minúsculas.
strtoupper($method)Función protegida (Abortar)
En el archivo router.php definimos el método de cancelación como una red de seguridad, mostrando una página de error si nuestro sitio web no puede encontrar la ruta correcta.
protected function abort($code = 404) { http_response_code($code); require base_path("views/{$code}.php"); die(); }Definiciones de ruta
Lo último es definir la configuración de enrutamiento en el archivo route.php, asignando las URL a las acciones correspondientes del controlador.
$router->get('/', 'controllers/index.php'); $router->get('/about', 'controllers/about.php'); $router->get('/contact', 'controllers/contact.php'); $router->get('/notes', 'controllers/notes/index.php'); $router->get('/note', 'controllers/notes/show.php'); $router->get('/notes/create', 'controllers/notes/create.php');El método get especifica el método de solicitud (GET), el patrón de URL y lo asigna a un archivo de controlador.
Conclusión
En conclusión, hemos creado un enrutador mejor que asigna de manera eficiente las URL a métodos de controlador específicos, lo que permite un enfoque más estructurado y fácil de mantener para manejar las solicitudes y mejorar el rendimiento general y la escalabilidad de nuestro sitio web.
Espero que lo hayas entendido claramente.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3