"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Creando un enrutador de página simple en PHP

Creando un enrutador de página simple en PHP

Publicado el 2024-11-07
Navegar:535

crear archivos

Primero, crearemos archivos index.php, router.php y .htaccess.

Redirigir todas las solicitudes a index.php en .htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]

Evitar el acceso directo a router.php

Este código mostrará una respuesta 404 si el usuario ingresa la URL para acceder directamente a router.php.

Agregar clase de página en router.php

class Page
{
  protected static bool $Return_404 = true;
}

Cree una variable booleana estática para devolver la página 404. Lo estableceremos en verdadero por defecto.
Ahora agregamos una función para la página 404.

protected static function Return_404(): void
    {
       (file_exists("./Pages/404.php")) ?  require_once "./Pages/404.php" : http_response_code(404);
    }

Aquí, puse una página 404 dentro de la carpeta Páginas. Puedes ponerlo en cualquier carpeta que quieras.

También agregaremos la función "Archivo".

protected static function File(string $file): string
{
    if (!empty($file)) {
        (str_contains($file, "?")) ? $file = strtok($file, '?') : $file;
        ($file[strlen($file) - 1] === "/") ? $file = rtrim($file, "/") : $file;
    }
    return $file;
}

Esta función comprobará si la URL de solicitud contiene una cadena de consulta o termina en "/" y la eliminará.
Utilizo la función de cadena "trazo" para obtener los valores de cadena antes de "?". Sé que "strok" no debe usarse de esta manera, pero funciona y me evita realizar algoritmos complejos innecesariamente. Utilizo la función de cadena "rtrim" para eliminar "/" si está contenida al final de la cadena.

Agregar clase Rutas en router.php

class Routes
{
    public static array $Route = array(
        "" => "Pages/home.php",
        "/about" => "Pages/about.php",
    );
}

Aquí, creo una matriz estática para almacenar rutas.
Esta matriz contiene "URL solicitada" => "Ubicación del archivo".
Puse todos los archivos de la página en la carpeta Páginas. Puedes ponerlos donde quieras.

Agregar clase de enrutador en router.php

La clase Enrutador se extenderá desde la clase Página que ya creamos anteriormente.
Tenga en cuenta que "" => "Pages/home.php", es para la página de inicio.

class Router extends Page
{

}

Ahora, escribiremos la función que verifica si el archivo solicitado existe en la clase Router.

   public static function Run(): void
    {
        $requested_file = self::File($_SERVER["REQUEST_URI"]);
        foreach (Routes::$Route as $request => $file) {
            if ($requested_file === $request) {
                if (file_exists($file)) {
                    self::$Return_404 = false;
                    require $file;
                } else echo "Error";
            }
        }
        if (self::$Return_404) self::Return_404();
    }

Esta función verifica primero que el archivo solicitado esté en la matriz $Route. Si existe, el valor booleano estático $Return_404 se establece en falso para que la página 404 no se muestre ni obtenga el archivo de la página. Si no existe, devolverá la página 404.
Si existe pero no hay ningún archivo en la carpeta Páginas, la función responderá "Error". Puedes mostrar la página 404 en lugar de hacer eco del "Error" aquí.

El archivo router.php final se verá así.

 $file) {
            if ($requested_file === $request) {
                if (file_exists($file)) {
                    self::$Return_404 = false;
                    require $file;
                } else echo "Error";
            }
        }
        if (self::$Return_404) self::Return_404();
    }
}
class Routes
{
    public static array $Route = array(
        "" => "Pages/home.php",
        "/about" => "Pages/about.php",
    );
}

índice.php

En index.php, usaremos la función "Ejecutar" de la clase Router.


Router

Todo el código HTML de las páginas estará en la etiqueta "body".

Crear paginas

Finalmente, crea home.php, about.php y 404.php en la carpeta Páginas.

inicio.php

Home page

acerca de.php

about page

404.php

404 page

Compruebe si el código funciona o no con la extensión "xampp" o "servidor PHP".

Si encuentras un error, no dudes en comunicármelo. XDD

También puedes consultar el repositorio de github en:

Creating a simple page router in PHP Tokigin / enrutador de paginación

Enrutador manual desde el repositorio de php-router

Declaración de liberación Este artículo se reproduce en: https://dev.to/kohtet_gintoki/creating-a-simple-page-router-in-php-2hpf?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

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