Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

modificar atributos de clase

Estas en el tema de modificar atributos de clase en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola buenas, tengo una clase que tiene unos ciertos atributos, que inicializo con el constructori, lo que pasa es que despues intento setear el atributo ...
  #1 (permalink)  
Antiguo 21/11/2007, 18:47
 
Fecha de Ingreso: octubre-2007
Mensajes: 203
Antigüedad: 16 años, 6 meses
Puntos: 0
modificar atributos de clase

Hola buenas, tengo una clase que tiene unos ciertos atributos, que inicializo con el constructori, lo que pasa es que despues intento setear el atributo para canviarle el valor y no canvia, permanece siempre el mismo que por inicializacion ha obenido del constructor:

Aqui la clase:
Código PHP:
class bloque {
    var 
$x;
    var 
$y;
    var 
$z;
    var 
$t;
    
    
// constructor
    
function bloque($xn,$yn,$zn,$tn) {
        
$this->$tn;
        
$this->$zn;
        
$this->$yn;
        
$this->$xn;
    }
        function 
set_x($valor){
        
$this->x=$valor;
        }

Porque no se setea el valor? porque siempre es el mismo? Que es lo que hago mal.

Setear atributos de la clase perjudica la encapsulacion de esta ultima?


Gracias por vuestro tiempo y saludos!!
  #2 (permalink)  
Antiguo 21/11/2007, 21:54
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: modificar atributos de clase

Como es que estas implementando la clase?

Saludos.
  #3 (permalink)  
Antiguo 22/11/2007, 07:36
 
Fecha de Ingreso: octubre-2007
Mensajes: 203
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: modificar atributos de clase

No entiendo que quieres decir con eso. Me puedes explicar mejor a que te refieres?
  #4 (permalink)  
Antiguo 22/11/2007, 08:51
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: modificar atributos de clase

Como es que estas utilizando tu clase?, es decir como es que llamas al constructor y al método para establecerle el valor.

Saludos.
  #5 (permalink)  
Antiguo 22/11/2007, 09:50
 
Fecha de Ingreso: octubre-2007
Mensajes: 203
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: modificar atributos de clase

primero con el constructor inicializo el valor del atributo, y luego con la funcion cambio ese atributo si lo necesito, pero al inicio necesito el valor que hay inicializado.

Aqui defino el objeto:

Código PHP:
$bloque = new bloque($n,$v,$s,$t); 
Aqui cambio el valor :

Código PHP:
$bloque-> set_x($valor); 

Última edición por B4l4; 22/11/2007 a las 09:55
  #6 (permalink)  
Antiguo 22/11/2007, 11:07
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
Re: modificar atributos de clase

A mí me parece que está bien. Podrías probar con la notación de OO para la versión 5 de PHP.
Es decir, __construct para el constructor y public/private en vez de var.
  #7 (permalink)  
Antiguo 22/11/2007, 13:50
 
Fecha de Ingreso: octubre-2007
Mensajes: 203
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: modificar atributos de clase

Ya es que lo he mirado en diferentes sitios y esta bien, pero no entiendo porque no me setea el valor, bueno en este caso que seria public o private? private verdad?

Saludos!
  #8 (permalink)  
Antiguo 23/11/2007, 02:49
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
Re: modificar atributos de clase

Con public podrás acceder a la variable directamente con un objeto.
Con private tendrás que utilizar una funcion como la set_x para actualizar el valor.
  #9 (permalink)  
Antiguo 28/11/2007, 14:37
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 8 meses
Puntos: 55
Re: modificar atributos de clase

para poder recuperar o cambiar cualuqier var existe
__set y __get

Código PHP:
public function __set($var,$val) {
$this->$var=$val;
}
public function 
__get($var) {

/*supongamos q no queresmos q se pueda acceder a $t, podemos utilizar*/

if($var=='t'){return;}

return 
$this->$var;

__________________
Degiovanni Emilio
developtus.com
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:09.