Programación con PHP 5 – 3.19 función __autoload()

Autoload
Cuando se escribe codigo Orientado a Objetos , es preferible que cada clase este dentro de un archivo con su mismo nombre.
El inconveniente es que a veces es necesario incluir muchas clases y su mantenimiento es dificil.
__autoload() soluciona este problema no requiriendo que se incluyan ( usando require, o include ) las clases que se van a usar.
Solo puede haber una funcion __autoload() por aplicacion y tu puedes acceder a una clase que no ha sido definida, esta funcion sera llamada con el nombre de la clase como parametro.
Esto te da la ventaja de incluir el código de la clase a tiempo.
Si tu ya has incluido una clase tu código continuará ejecutandose como si la clase se hubiera definido.
Si tu no incluyes la clase el motor de scripting llega a un error fatal por que la clase no existe.

MyClass.php:
<?php
class MyClass {
function printHelloWorld()
{
print "Hello, Worldn";
}
}
?>
general.inc:
<?php
function __autoload($class_name)
{
require_once($_SERVER["DOCUMENT_ROOT"] . "/classes/
➥$class_name.php");
}
?>
main.php:
<?php
require_once "general.inc";
$obj = new MyClass();
$obj->printHelloWorld();
?>

Aqui el archivo general.inc es incluido con require_once en el archivo main.php.
Este archivo debera incluirse en cada archivo principal que necesite llamar a varias clases.

Se debe tener en cuenta que en PHP el nombre de las clases es case-insensitive (es decir no importa que esten en mayusculas o minúsculas, un nombre de clase miClase y MICLASE son iguales). Si por el contrario configuras PHP para que los nombres de clases sean case-insensitive, debes usar strtolower() para que cualquier nombre de clase sea convertido a minúsculas.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s