Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Frameworks y PHP orientado a objetos (http://www.forosdelweb.com/f68/)
-   -   Problema con arreglo como variable de clases (http://www.forosdelweb.com/f68/problema-con-arreglo-como-variable-clases-585683/)

vmgafrm 12/05/2008 17:56

Problema con arreglo como variable de clases
 
Este es uno de esos problemas que parecen tontos pero que la solucion se hace inexplicablemente cuesta arriba.
La cosa es que tengo una variable dentro de una clase (estoy trabajando en php4) que necesito trabajar como un arreglo, todo parece funcionar bien pero cuand intento acceder a la variable desde un objeto de esa clase pareciera que los valores desaparecen.

Espero que se entienda el problema.
Muchas gracias por su ayuda.:-)

Marvin 12/05/2008 18:04

Re: Problema con arreglo como variable de clases
 
Podrias poner tu codigo... y quiero saber si te ha funcionado trabajar con clases sin tener problemas en php4.

Suerte! :arriba:

pateketrueke 12/05/2008 18:13

Re: Problema con arreglo como variable de clases
 
es necesario ver la clase en cuestion, ya que las variable declaradas...

var $foo;

se leen/modifican dentro de metodos usando $this->foo (sino, pon el codigo... haber ke es)

vmgafrm 14/05/2008 12:14

Re: Problema con arreglo como variable de clases
 
Ok, gracias a ambos, aquí les pongo la clase con su constructor:

Código PHP:

class Usuario
    
{
        var 
$id;
        var 
$rif;
        var 
$rif_prefijo;
        var 
$rif_numero;
        var 
$nick;
        var 
$rol;        
        var 
$nombres;
        var 
$apellidos;
        var 
$direccion;
        var 
$email;
        var 
$telefonos;        
        var 
$status;
        var 
$semanas;
        
        
        function 
Usuario($id)
        {
            
$query=operacionSQL("SELECT * FROM Usuario WHERE id='".$id."'");
            
$this->id=$id;
            
$this->rif=mysql_result($query,0,1);
            
$this->nick=mysql_result($query,0,2);
            
$this->rol=mysql_result($query,0,4);
            
$this->nombres=mysql_result($query,0,5);
            
$this->apellidos=mysql_result($query,0,6);
            
$this->direccion=mysql_result($query,0,7);
            
$this->email=mysql_result($query,0,8);
            
$this->telefonos=mysql_result($query,0,9);
            
$this->status=mysql_result($query,0,10);
            
            
$this->rif_prefijo=$this->rif[0];
            
$this->rif_numero=substr($this->rif,2,strlen($this->rif)-2);
            
            
            
$query=operacionSQL("SELECT id_semana,status FROM Usuario_Semana WHERE id_usuario='".$id."'");
            
$l=mysql_num_rows($query);
            
            
            for (
$i=0;$i<$l;$i++)
            {    
                
$this->$semanas[$i]['id']=mysql_result($query,$i,0);
                
$this->$semanas[$i]['status']=mysql_result($query,$i,1);                
            }
            
        } 

El problema esta al final del constructor, en el ciclo for que es donde armo el arreglo. Si hago un echo de lo qu voy guardando en el arreglo en el propio constructor me lo imprime sin problemas, pero al tratar de accederlo desde el objeto una vez creado no obtengo nada.

Marvin, no llevo mucho tiempo trabajando con clases en PHP y como el hosting con el que estoy trabajando es php4 defino las clases de manera muy sencilla, basicamente variaables y funciones sin considerar public, private, static ni nada de eso. Hasta ahora me ha ido bien.

Gracias por su auyuda.

GatorV 14/05/2008 14:32

Re: Problema con arreglo como variable de clases
 
Hola vmgafrm,

Tu problema es al llamar a $this->$semanas, debe de ser de esta forma $this->semanas, recuerda que cuando llamas a variables no debes de usar $ dentro del objeto si ya estas usando $this.

Tema trasladado a PHP Orientado a Objetos.

vmgafrm 14/05/2008 14:43

Re: Problema con arreglo como variable de clases
 
Muchas gracias Gator, pero no es ese el problema, lo que sucede es que lo copie rapido para montarlo aqui, si se fija el resto de las variables de la clase las trato como $this->variable.

GatorV 14/05/2008 14:46

Re: Problema con arreglo como variable de clases
 
Pero particularmente tu variable semanas es la que lees así: $this->$semanas, y debe de ser $this->semanas.

Por otro lado te recomiendo inicializar la variable antes del for con $this->semanas = array();

Saludos.


La zona horaria es GMT -6. Ahora son las 10:04.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.