Retroceder   Foros del Web > Programación para sitios web > PHP > PHP orientado a objetos

Respuesta
 
Herramientas Desplegado
Antiguo 07-feb-2007, 21:09   #1 (permalink)
hen
hen está en el buen camino
 
Fecha de Ingreso: diciembre-2003
Ubicación: Buenos Aires
Mensajes: 63
Enviar un mensaje por ICQ a hen Enviar un mensaje por MSN a hen
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
hen está desconectado   Responder Citando
Antiguo 08-feb-2007, 06:38   #2 (permalink)
nicolaspar tiene algunos puntos positivos de karma
 
Avatar de nicolaspar
 
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 1.622
Enviar un mensaje por ICQ a nicolaspar Enviar un mensaje por MSN a nicolaspar
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!
__________________
Dicen comprender a la mente humana sabiendo que es ella quien les hace creer eso. [Nicolaspar]
Hoy: wysiwyg bbcode editor
nicolaspar está desconectado   Responder Citando
Antiguo 08-feb-2007, 20:29   #3 (permalink)
hen
hen está en el buen camino
 
Fecha de Ingreso: diciembre-2003
Ubicación: Buenos Aires
Mensajes: 63
Enviar un mensaje por ICQ a hen Enviar un mensaje por MSN a hen
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
hen está desconectado   Responder Citando
Antiguo 08-feb-2007, 20:31   #4 (permalink)
hen
hen está en el buen camino
 
Fecha de Ingreso: diciembre-2003
Ubicación: Buenos Aires
Mensajes: 63
Enviar un mensaje por ICQ a hen Enviar un mensaje por MSN a hen
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
hen está desconectado   Responder Citando
Antiguo 08-feb-2007, 21:07   #5 (permalink)
Gurrutello ha deshabilitado el karma
 
Avatar de Gurrutello
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ontario,Toronto [Canada]
Mensajes: 1.988
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
Gurrutello está desconectado   Responder Citando
Antiguo 08-feb-2007, 22:11   #6 (permalink)
$this->role('moderador');
GatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradable
 
Avatar de GatorV
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ags/
Mensajes: 13.961
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.
GatorV está desconectado   Responder Citando
Antiguo 09-feb-2007, 05:43   #7 (permalink)
hen
hen está en el buen camino
 
Fecha de Ingreso: diciembre-2003
Ubicación: Buenos Aires
Mensajes: 63
Enviar un mensaje por ICQ a hen Enviar un mensaje por MSN a hen
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
hen está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 13:56.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93