Estoy arreglando un sitio, andaba todo bien, pero cuando lo movimos de servidor, me tira tira este error:
Fatal error: Cannot re-assign $this in /home/jokerage/public_html/lib/Factory.class.php on line 37
Yo estoy sospechando, de la versión de php, porque en el servidor anterior estaba corriendo con php4, en este servidor va con php5...
el codigo de la clase que falla es:
Código PHP:
<?php
class Factory {
var $sufijo = '.class.php';
var $arr_lib_dir = array('C:/Domains/estudioi.es/wwwroot/admin/lib/', '/home/jokerage/public_html/lib/', '/home/identidad/www/clientes/ccmx/cms/lib/', 'c:/www/identidad/lib/', 'c:/www/identidad/estudioi/lib/', '/www/jokerapuestas.com.ar/htdocs/lib/');
function Factory ( $class, $path = null ) {
if ( empty($path) ) {
foreach ( $this->arr_lib_dir as $value ) {
if ( $this->_IsValid($class, $value) ) {
$path = $value;
break;
}
}
if ( empty($path) ) {
die('No se puede encontrar el archivo de la clase en los path especificados');
}
}
if ( $this->_IsValid($class, $path) ) {
if ( !class_exists($class) ) require_once $path.$class.$this->sufijo;
if ( class_exists($class) ) {
$args = '';
$num_args = func_num_args();
if ( $num_args > 2 ) {
$lista_args = func_get_args();
for ($i = 2; $i < $num_args; $i++) {
if ( is_array($lista_args[$i]) ) {
$args .= 'array('.$this->_arr2str($lista_args[$i]).'),';
}
else {
$args .= '"'.$lista_args[$i].'",';
}
}
$args = rtrim($args, ',');
}
$this = eval("return new $class($args);");
}
else {
die('No se puede incluir la clase');
}
}
else {
die('No se puede encontrar el archivo de la clase');
}
}
function _IsValid($class, $path) {
if ( is_file($path.$class.$this->sufijo) ) {
return true;
}
}
function _arr2str($array){
$line = "";
foreach($array as $key => $value){
if(is_array($value)){
$value = "array (". $this->_arr2str($value) . ")";
}
else {
$value = "'".$value."'";
}
if (is_numeric($key)) {
$line .= "," . $key;
}
else {
$line .= ",'" . $key. "'";
}
$line .= "=> ". $value;
}
$line = substr($line, 1);
return $line;
}
}
?>
la linea que falla es
$this = eval("return new $class($args);");, ya probe poniendo
return(eval("return new $class($args);");, pero mismo efecto, probe comentando esta sentencia... pero como es obvio.... no crea instancia de ninguna clase.. entonces factory no serviria de mucho...