Tema: eval()
Ver Mensaje Individual
  #5 (permalink)  
Antiguo 05/08/2009, 15:58
Avatar de Italico76
Italico76
 
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
me faltaba super escapar una cadena que tenia tags.......ahora no da error......

$t->setProcessing ("\"<a href=\'{$elem[1]}\'>{$elem[0]}</a>\"");

...pero tampoco evalua las variables dentro del metodo

private function procesoItem($elem){
eval("\$return=" . $this->code . ";" );
return $return;

}

public function setProcessing ($code){
$this->code= $code;
}

Código PHP:
<?
// CLASE de TABLAS basada en betadir

$t = new table(3,500);
$t->setCols(4); // encadenar!
$a=5;
$t->setProcessing ("\"<a href='{$elem[1]}'>{$elem[0]}</a>\"");
//$t->setProcessing (5);

//$t->setRows(2);
$t->addItem( array ('Wikipedia','http://www.wikipedia.com') );
$t->addItem( array ('Google','http://www.google.com') );
$t->addItem( array ('BetaDir','http://www.betadir.com') );
$t->addItem( array ('YeapDIR','http://www.yeapdir.com') );
$t->addItem( array ('Foros Del Web','http://forosdelweb.com') );
$t->addItem( array ('Pirulex','http://www.pirulex.com') );

echo 
$t->getTable();


Class 
table {
  
  private 
$width;
  private 
$cols;     
  private 
$rows=NULL
  private 
$code=NULL;
  private 
$tabla// html generado
  
  
private $icon'<img src="http://www.bancocredicoop.coop/modules/personas/images/bullet_on.gif">';
  
  private 
$list=array();
  private 
$item//array bi-
  
private $total=0;  // cant de items  
  
    
  
public function __construct($width){    
    
$this->width$width;
  }    
  
  public function 
setCols ($cols){
    
$this->cols $cols;
    return 
$table;
  }
  
  public function 
setRows ($rows){
    
$this->rows $rows;
    return 
$table;
  }     
  
  public function 
setProcessing ($code){
    
$this->code$code;    
  }
 
  private function 
procesoItem($elem){      
    
//return "<a href='{$elem[1]}'>{$elem[0]}</a>";            
    
eval("\$return=" $this->code ";" );    
    return 
$return;    
  }
 
  public function 
getTable(){  // __tostring 
    
$this->doTable();
    return 
$this->tabla;
  }  
 
  
  public function 
addItem($fila){
    
$this->list[]=$fila;
    
$this->total++;
  }
  
  private function 
assign (){
  
// asigno elementos al listado
    
$i=0;
    for (
$f=0;$f<$this->rows;$f++){    
      for (
$c=0;$c<$this->cols;$c++){    
        
$this->item[$f][$c] = $this->list[$i]; 
        ++
$i;
      }
    }
  }

  private function 
doTable (){  
  
    if (
$this->rows == NULL){
      
$this->rows ceil(count($this->list) / $this->cols); 
    }
    
    
$this->assign();   
    
    
// creo tabla en HTML
    
$tabla="<table width='".$this->width."'  border='0' CellSpacing='5' CellPadding='5'>";  
    for (
$f=0;$f<$this->rows;++$f){    
  
      
$fila "<tr>"
      for (
$c=0;$c<$this->cols;$c++){       
        if (
count($this->item[$f][$c])>0){           
          
$fila $fila"<td align='left'>".$this->icon$this->procesoItem($this->item[$f][$c]) ."</td>";
        }else{
          
$fila $fila"<td align='left' >&nbsp;</td>";  
        }
      }
      
$fila$fila."</tr>";   
      
$tabla $tabla $fila;
    }  
    
$tabla$tabla.'</table>';
    
$this->tabla=$tabla;
  }   
    
# fin de la clase     
?>
PATE ... probé tu modificacion.. pero con como le paso ahora el codigo las comillas son las que salen impresas.

Alguien sabe si puedo evaluar variables que estan "definidas" dentro de una funcion o metodo ?

podrá solucionarse mi problema? no se que mas probar...
__________________
Salu2!

Última edición por GatorV; 05/08/2009 a las 21:43