Autoload en PHP

Autoload

En este blog hablaremos de lo que es el Autoload en el lenguaje de programación de PHP. Os lo voy a explicar con un ejemplo sencillo:

Imaginaros que hemos organizado nuestro código en diferentes archivos, cada uno con una clase y llamando al archivo con el nombre de la

clase. Por ejemplo, OneClass.php y OtherClass.php llevarán las definiciones de class OneClass y class OtherClass respectivamente. Para iniciar esas clases desde otro script podríamos hacer algo como esto:

// include the files containing the classes
include_once 'OneClass.php';
include_once 'OtherClass.php';

// initialize the objects
$object1 = new OneClass();
$object2 = new OtherClass();

Todo perfecto. Puedes seguir trabajando en tu aplicación sin problemas y puedes seguir definiendo más clases en más archivos que tendrás que acordar de incluir en tu script:

// include the files containing the classes
include_once 'OneClass.php';
include_once 'OtherClass.php';
include_once 'MoreClass.php';
include_once 'FourClass.php';
include_once  'EvenMoreClass.php';

// initialize the objects
$object1 = new OneClass();
$object2 = new OtherClass();
$object3 = new MoreClass();
//....

No hay nada malo con el código de arriba, funcionará perfectamente. ¿Pero que pasaría si tienes una aplicación muy grande con muchas `clases`? Bueno, tendrás que añadir `includes` todo el tiempo. Sinceramente, sería una tarea muy engorrosa... y si se me olvida un archivo... ERROR.

Añadir Autoload

En lugar de añadirlas manualmente, podemos registrar un `autoloader`. El `autoloader` se encargará de cargar las `clases` usadas automáticamente. Cada vez que se haga un intento de iniciar una `clase` y la clase no existe, el nombre de esta `clase` se "pasará" al `autoloader` y se ejecutará.

En el `autoloader` podemos automatizar la carga de los procesos sin tener que incluir manualmente cada archivo, además de que hará que nuestro código sea rápido y que solamente se carguen las `clases` que estemos usando.

Aquí tienes un ejemplo de como usar el `autoloader`:

function app_autoloader($class)
{
    require_once 'clases/'.$class.'.php';
}

spl_autoload_register('app_autoloader');

Y aquí tienes cómo yo uso el `autoload` en lugar de `require_once()` en mi `index.php`

require_once 'autoload.php';
/*Instead of using that:
require_once 'clases/usuario.php';
require_once 'clases/categoria.php';
require_once 'clases/entrada.php';
*/

$usuario = new Usuario();

echo $usuario--->nombre;
echo "
"; echo $usuario->email; $categoria = new Categoria(); echo "
".$categoria->nombre;

Como puedes ver, ahorraras mucho tiempo haciendo esto.

Puedes ver el código aquí.

VOLVER AL BLOG