El autoloading es una característica de PHP que permite la carga automática de clases cuando se necesitan, en lugar de tener que incluirlas manualmente.
Primero, vamos a establecer una estructura de directorios básica para nuestra aplicación MVC:
/ MiAplicacion
/ app
/ controller
- MiControlador.php
/ model
- MiModelo.php
/ view
- MiVista.php
- index.php
Cada archivo dentro de los directorios controller, model y view contendrá una clase con el mismo nombre que el archivo.
A continuación, vamos a crear nuestro autoloader. PHP proporciona una función llamada spl_autoload_register que registra cualquier número de autoloaders, lo que permite la autoliquidación y la carga de clases y interfaces.
En nuestro archivo index.php, vamos a registrar un autoloader:
<?php
spl_autoload_register(function ($class_name) {
// Definir la ruta base a la carpeta de la aplicación
$base_dir = __DIR__ . '/app/';
// Reemplazar los separadores de espacio de nombres con separadores de directorios en el nombre de la clase, // añadir .php al final y obtener la ruta completa del archivo de la clase
$file = $base_dir . str_replace('\\', '/', $class_name) . '.php';
// Si el archivo existe, requiérelo
if (file_exists($file)) {
require $file;
}
});
Ahora, cada vez que intentes instanciar una clase que aún no ha sido incluida, PHP llamará automáticamente a nuestro autoloader, que incluirá el archivo que contiene esa clase.
Por ejemplo, si tienes una clase MiControlador en el archivo app/controller/MiControlador.php, puedes instanciarla así:
<?php
$miControlador = new MiControlador();
PHP llamará automáticamente a nuestro autoloader, que incluirá el archivo.
app/controller/MiControlador.php
El autoloading puede hacer que tu código sea más limpio y fácil de manejar, especialmente en aplicaciones grandes con muchas clases.
Sin embargo, también es importante entender cómo funciona y cómo puede afectar el rendimiento de tu aplicación. ¡Espero te funcione con tu proyecto en PHP MVC!
Tu primer sitio web real en PHP 7, MYSQL, AJAX y MATERIALIZE
Crea increíbles sitios web, en: PHP, MySQL, AJAX, + POO MVC!
Hola mi nombre es Eduardo Nava, Soy programador, diseñador web, móvil y de videojuegos.
El mundo digital avanza cada día.
Soy completamente autodidacta, por eso te ofrezco muchos de mis conocimientos para puedas aprender más fácilmente y más rápido de lo que hice y hago cada día.
Mi propósito es tratar mi pasión para enseñar tecnologías que avanzan cada día a todas esas personas, que quieran iniciarse en este mundo de forma actualizada.