Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Frameworks y PHP orientado a objetos (http://www.forosdelweb.com/f68/)
-   -   Como se usa el __autoload() (http://www.forosdelweb.com/f68/como-usa-__autoload-463561/)

hen 07/02/2007 22:09

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

nicolaspar 08/02/2007 07:38

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!

hen 08/02/2007 21:29

Re: Como se usa el __autoload()
 
Gracias nicolaspar.
Voy a preguntar en el foro de OOP a ver q me dicen

Chao.

hen 08/02/2007 21:31

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

Gurrutello 08/02/2007 22:07

Re: Como se usa el __autoload()
 
Hola
Mas info http://www.php.net/manual/es/language.oop5.autoload.php
Saludos

GatorV 08/02/2007 23:11

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.

hen 09/02/2007 06:43

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


La zona horaria es GMT -6. Ahora son las 10:52.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.