función __autoload() en php

Cuando trabajamos con objetos en php, debemos cargar previamente los archivos que contienen las clases que queramos instanciar.

Cuando trabajamos con muchos archivos de clases, la función __autoload nos automatiza el uso de includes/requires para dichos archivos.

__autoload nos evita tener que escribir un require/include por cada nueva clase que queramos instanciar, vemos un ejemplo:


function __autoload($nombre_de_clase) {
require_once $nombre_de_clase . '.php';
}
$objeto1 = new Clase1();
$objeto2 = new Clase2();
?>

En éste ejemplo al crear $objeto1 y $objeto2 se harán los correspondientes require_once para cada clase y, de no encontrar el archivo con el mismo nombre de la Clase en cuestión, dará error.

Sobre Asier

Arquitecto web enganchado al desarrollo, estudio y planteamiento de proyectos en internet. Trabajo en Blackslot, empresa que fundé en el 2009. Me encanta el cine, el café, el sexo, la cultura geek, la cultura oriental y la música electrónica.
Artículo publicado en Desarrollo Web, PHP. Enlace a esta entrada..

4 espuestas a función __autoload() en php

  1. iTony dijo:

    pero la funcion hace lo mismo que lo que hicieras a mano, no le hayo mucha importancia a la funcion en si, a lo mejor si pudiera haceptar un array para declarar todas las clases que quieras usar asi si le agarraria uso.
    como:
    function __autoload($clase_s) {
    if(is_array($clase_s)){
    foreach($clase_s as $clase)
    require_once $clase . ‘.php’;
    }elseif(is_string($clase_s)){
    require_once $clase_s . ‘.php’;
    }else
    //mandar error
    }

    bueno pues ese es mi punto de vista aunke casi no trabajo con objetos.

  2. @iTony, la “gracia” de ésta funcion es que tu no necesitas llamarla para nada en ningún momento.
    Cuando creas un objeto nuevo de ésta forma: $objeto = new Nombre_Clase(); la función __autoload es llamada automáticamente (si antes no has hecho un require del archivo que contiene la clase) y le pasará como parámetro el valor “Nombre_Clase”.

    En definitiva es una función “para vagos” o despistados que, desde mi punto de vista, esta bien conocer pero desde luego es mejor cargar los requires a mano.

    Un saludo

  3. iTony dijo:

    oooh :P necesito saber mas sobre objetos y clases en php gracias por el tip. y es llamada automaticamente porque el nombre ya es una constante del sistema o porque?

  4. @iTony es una característica propia de php5, parecida a los métodos __get/__set, si php ve que instancias una clase que él no encuentra definida en tu script, llama automáticamente a __autoload para darte una última oportunidad antes de mostrar un error.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos requeridos, están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Notificarme los nuevos comentarios por correo electrónico. Tambien puedes suscribirte sin comentar.