Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Como se usa el __autoload()

Estas en el tema de Como se usa el __autoload() en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola a todos Estuve leyendo el manual de php, y me quedaron dudas de como utilizar la funcion __autoload() Primero no estoy seguro si es ...
  #1 (permalink)  
Antiguo 07/02/2007, 22:09
hen
 
Fecha de Ingreso: diciembre-2003
Ubicación: Buenos Aires
Mensajes: 63
Antigüedad: 20 años, 4 meses
Puntos: 1
Como se usa el __autoload()

Hola a todos

Estuve leyendo el manual de php, y me quedaron dudas de como utilizar la funcion
__autoload()
Primero no estoy seguro si es una funcion de PHP o es una funcion definida por el usuario, y segundo q en el ejemplo q hay en la pagina:

<?php
function __autoload($class_name) {
require_once $class_name . '.php';
}

$obj = new MyClass1();
$obj2 = new MyClass2();
?>

No entiendo como el parametro $class_name toma el valor de la clase adecuada asi como por arte de magia.
¿Es acaso q el valor de este parametro es siempre el string q esta al lado de la palabra new ?
Osea el nombre de la clase q se esta intentando instanciar 'MyClass1' y 'MyClass2' ¿?

Si alguien ya implemento esta funcion, ¿seria tan amable de poner parte del codigo (sin los datos sensibles, claro) para ver como lo implemento, o recomendar una pagina con ejemplos mas completos para aprender a usar esta funcion ?

Muchas gracias.

Chao
__________________
.:hEN
DevHen
EXITOS
  #2 (permalink)  
Antiguo 08/02/2007, 07:38
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Re: Como se usa el __autoload()

Claro, es como un controlador.
Supongamos que tenes la classe MyClass1 y MyClass2, la primera en MyClass1.php y la segunda en MyClass2.php.
Cuando intentes crear un objeto esto llamara a __autoload() y esta ejecutara phlo que tengas dentro, en este caso el include de ambos .php.
Sería lo mismo que hacer:
Código PHP:
<?php

   
require_once 'MyClass1.php';
   require_once 
'MyClass2.php';


$obj  = new MyClass1();
$obj2 = new MyClass2();
?>

Pero esto con 10 archivos o mas archivos de clases se resume a un único include, es una manera limpia de trabajar.

Se de formas de hacer controladores un poco mas rebuscadas, pero que es optimo y que no, o si hay una mejor opción lo sabrás haciendo la pregunta en el subforo de oop.

Suerte!
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #3 (permalink)  
Antiguo 08/02/2007, 21:29
hen
 
Fecha de Ingreso: diciembre-2003
Ubicación: Buenos Aires
Mensajes: 63
Antigüedad: 20 años, 4 meses
Puntos: 1
Re: Como se usa el __autoload()

Gracias nicolaspar.
Voy a preguntar en el foro de OOP a ver q me dicen

Chao.
__________________
.:hEN
DevHen
EXITOS
  #4 (permalink)  
Antiguo 08/02/2007, 21:31
hen
 
Fecha de Ingreso: diciembre-2003
Ubicación: Buenos Aires
Mensajes: 63
Antigüedad: 20 años, 4 meses
Puntos: 1
Como se usa el __autoload()

Hola a todos

Estuve leyendo el manual de php, y me quedaron dudas de como utilizar la funcion
__autoload()
Primero no estoy seguro si es una funcion de PHP o es una funcion definida por el usuario, y segundo q en el ejemplo q hay en la pagina:

<?php
function __autoload($class_name) {
require_once $class_name . '.php';
}

$obj = new MyClass1();
$obj2 = new MyClass2();
?>

No entiendo como el parametro $class_name toma el valor de la clase adecuada asi como por arte de magia.
¿Es acaso q el valor de este parametro es siempre el string q esta al lado de la palabra new ?
Osea el nombre de la clase q se esta intentando instanciar 'MyClass1' y 'MyClass2' ¿?

Si alguien ya implemento esta funcion, ¿seria tan amable de poner parte del codigo (sin los datos sensibles, claro) para ver como lo implemento, o recomendar una pagina con ejemplos mas completos para aprender a usar esta funcion ?

Muchas gracias.

Chao
__________________
.:hEN
DevHen
EXITOS
  #5 (permalink)  
Antiguo 08/02/2007, 22:07
Avatar de Gurrutello  
Fecha de Ingreso: enero-2002
Ubicación: Ontario,Toronto [Canada]
Mensajes: 2.017
Antigüedad: 22 años, 3 meses
Puntos: 6
Re: Como se usa el __autoload()

Hola
Mas info http://www.php.net/manual/es/language.oop5.autoload.php
Saludos
__________________
Un Saludo
www.tutores.org
Asp | Php | Javascript | Perl | Coldfusion | Flash | +- 2000 codigos
  #6 (permalink)  
Antiguo 08/02/2007, 23:11
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Como se usa el __autoload()

La funcion autoload es magica, y es una funcion definida por ti, supongamos que tienes muchisimas clases, todas en un directorio especifico que se llama "lib".

Entonces en lugar de estar haciendo un script asi:
Código PHP:
require('lib/personas.class.php');
require(
'lib/proveedores.class.php');

$persona = new personas(); 
En lugar de cargar todos tus requires, que pueden ser bastantes usas el autoload:
Código PHP:
function __autoload($class) {
      require(
'lib/$class.class.php');
}

$persona = new personas(); 
PHP cuando encuentra el new NOMBRE_DE_CLASE y ve que la clase no existe, tratara de cargarla usando autoload.

Esto es muy util, y puedes ver el porque juega un papel importante en PHP5.
  #7 (permalink)  
Antiguo 09/02/2007, 06:43
hen
 
Fecha de Ingreso: diciembre-2003
Ubicación: Buenos Aires
Mensajes: 63
Antigüedad: 20 años, 4 meses
Puntos: 1
Re: Como se usa el __autoload()

GatorV muchas gracias , me quedo claro.
Cambiando de tema. Q paso con tu microframwork de php, podrias postear un manual de como hacer uno, la idea parece bastante interesante, al menos para mi.
Bueno otra vez gracias.

Chao
__________________
.:hEN
DevHen
EXITOS
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:08.