Ver Mensaje Individual
  #6 (permalink)  
Antiguo 05/04/2009, 08:27
AleBSyS
 
Fecha de Ingreso: marzo-2009
Mensajes: 2
Antigüedad: 15 años, 10 meses
Puntos: 0
Problema Clase Factory

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 ) {
                        
$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($line1);
            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...