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_clase, parametro, parametro, ...);
Es posible especificar como parámetro un string, numérico, función array u otros objetos.
Espero que sea útil ^^
Gracias.
Exitos.