Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/08/2007, 17:18
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 17 años, 8 meses
Puntos: 22
Sonrisa autoload en php4

Hola ^^
Hoy vengo con ganas de hacer una contribución hum!

Empecé oop gracias a un amigo del foro Fransisco01, y hace poco me presentó la función autoload. Resulta que cuando la quiero poner en práctica en un proyecto (para un cliente) me hacen desarrollar en un host con php4..

Entiendo que ya nadie lo quiere, pero parece que a algunos les cuesta actualizarse jaja asi que desarrollé esta función alternativa que la comparto para aquellos que se encuentren en una situación similar x) como para salir del apuro..

Jaja, aquí va ^^
Código PHP:
$documentroot $_SERVER['DOCUMENT_ROOT'];
if(
substr($documentroot,strlen($documentroot)-1,1)!="/"$documentroot.="/";
define("ROOT",$documentroot,1);
    
define("CLASSES_PATH","op/classes/",true);
define("CLASSES_PREFIX","class.",true);

function 
_new() {
    
$args func_get_args();
    
$count count($args);
    if(!
$args || $count<1) { return false; break; }
    
$class $args[0];
    
$file ROOT.CLASSES_PATH.CLASSES_PREFIX.$class.".php";
    
$class_args="";
    if(
file_exists($file)) {
        require_once(
$file);
        if(
$args>1) {
            
$class_args.="(";
            for(
$i=1;$i<$count;$i++) {
                
$aarg $args[$i];
                if(
is_object($aarg)) { 
                    
$p="obj$i"; $$p=$aarg;
                    
$class_args.="\$$p,";
                } elseif(
is_array($aarg)) {
                    
$p="arr$i"; $$p=$aarg;
                    
$class_args.="\$$p,";
                } else {
                    
$class_args.=is_int($aarg)?"$aarg,":"'$aarg',";
                }
            }
            
$class_args trim($class_args,",");
            
$class_args.=")";
        }
        eval(
"\$res = new $class$class_args;");
        return 
$res;
    } else { return 
false; }

Su forma de utilización es sencilla (y evidente):
Código PHP:
$objeto _new(nombre_de_la_claseparametroparametro, ...); 
Es posible especificar como parámetro un string, numérico, función array u otros objetos.

Espero que sea útil ^^
Gracias.

Exitos.