Comunidad de diseño web y desarrollo en internet online

Problema de POO: Acceso a una varible desde una funcion

Citar            
MensajeEscrito el 01 Jul 2007 06:43 pm
La supuesta clase es sencilla, inicialmente se selecciona una id aleatoriamente de una tabla y guardo los valores de los campos en variables diferentes; a las cuales quiero acceder desde una funcion.

Código :

class mitsukaranakatta{
var $titulo;
var $mensaje;
var $url_imagen;

   function mitsukaranakatta(){
      global $wpdb;
      $numero_errores=$wpdb->get_results("SELECT * FROM ".$wpdb->prefix."mitsukaranakatta");
      $num_max_items=count($numero_errores);
      $id=rand(1,$num_max_items);
      $resultados=$wpdb->get_results("SELECT * FROM ".$wpdb->prefix."mitsukaranakatta"." WHERE id LIKE '$id'");
   foreach($resultados as $fila)
      {
         $this->$titulo=$fila->titulo;
         $this->$mensaje=$fila->mensaje;
         $this->$url_imagen=$fila->urlimagen;
      }
   }
   
   function titulo(){
      echo "Titulo: ".$this->$titulo."<br>";
   }
   
   function mensaje(){
      echo "Mensaje: ".$this->$mensaje."<br>";         
   }
   
   function url_imagen(){
      echo "URL: ".$this->$url_imagen."<br>";         
   }
}

El problema, creo yo, que es en el foreach, porque todas las variables guardan el valor del ultimo campo seleccionado :(; en este caso el de

Código :

$fila->urlimagen;

Por Jorgelig

Claber

3035 de clabLevel

12 tutoriales

 

Monterrey, Nuevo Leon, MX

firefox
Citar            
MensajeEscrito el 01 Jul 2007 08:01 pm
Resuelto, no me habia fijado bien; pero las propiedades de los objetos no llevan signo de $. Por lo que para acceder a la propiedad titulo de la clase, no se usa el $. En pocas palabras el codigo debe quedar asi:

Código :

class mitsukaranakatta{
var $titulo;
var $mensaje;
var $url_imagen;

   function mitsukaranakatta(){
      global $wpdb;
      $numero_errores=$wpdb->get_results("SELECT * FROM ".$wpdb->prefix."mitsukaranakatta");
      $num_max_items=count($numero_errores);
      $id=rand(1,$num_max_items);
      $resultados=$wpdb->get_results("SELECT * FROM ".$wpdb->prefix."mitsukaranakatta"." WHERE id LIKE '$id'");
   foreach($resultados as $fila)
      {
         $this->titulo=$fila->titulo;
         $this->mensaje=$fila->mensaje;
         $this->url_imagen=$fila->urlimagen;
      }
   }
   
   function titulo(){
      echo "Titulo: ".$this->titulo."<br>";
   }
   
   function mensaje(){
      echo "Mensaje: ".$this->mensaje."<br>";         
   }
   
   function url_imagen(){
      echo "URL: ".$this->url_imagen."<br>";         
   }
}

Por Jorgelig

Claber

3035 de clabLevel

12 tutoriales

 

Monterrey, Nuevo Leon, MX

firefox
Citar            
MensajeEscrito el 02 Jul 2007 10:03 pm
Te recomiendo que no uses variables globales en las clases, pues comprometes considerablemente la reusabilidad.

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.