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

Raro (URGENTE)

Estas en el tema de Raro (URGENTE) en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola! gracias desde ya... porque tengo un problema. En esta clase... que hice para replicar mi problema, no entiendo porque no se cambia el valor ...
  #1 (permalink)  
Antiguo 22/08/2009, 11:42
 
Fecha de Ingreso: agosto-2009
Mensajes: 247
Antigüedad: 14 años, 9 meses
Puntos: 10
Exclamación Raro (URGENTE)

Hola! gracias desde ya... porque tengo un problema.

En esta clase... que hice para replicar mi problema, no entiendo porque no se cambia el valor del atributo 'a' y tampoco entiendo porque logro seterar un atributo que no fue declarado como 'b'

Código PHP:
<?
class Foo {
      private 
$a;
 
      public function 
__construct() {
       
$this->$this->procesa ();
       echo 
$this->a;
       
       
$this->=5;
       echo 
$this->b;
      }
 
      private function 
procesa(){
        
$this->10;
      }
      
}
 
$foo = new Foo();
?>
Es urgente.....porque me tiene trabadisimo......gracias de nuevo!
  #2 (permalink)  
Antiguo 22/08/2009, 12:33
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 4 meses
Puntos: 845
Respuesta: Raro (URGENTE)

El valor de "a" si cambia, el problema es que lo estas "pisando" con una función que no retorna nada.
cambia esto:
Código PHP:
  $this->$this->procesa();
  echo 
$this->a
por esto:
Código PHP:
  $this->procesa();
  echo 
$this->a
Y en cuanto a lo otro, php no te obliga a declarar los atributos, los podes hacer porque te deja el lenguaje, si fuese java por ejemplo no podrias.
El problema que tiene esa forma de hacerlo es que perdes la posibilidad de declararle la visibilidad(private, protected, public).
salu2.
  #3 (permalink)  
Antiguo 22/08/2009, 12:34
 
Fecha de Ingreso: julio-2009
Mensajes: 9
Antigüedad: 14 años, 9 meses
Puntos: 1
Respuesta: Raro (URGENTE)

Cita:
Iniciado por bigwhite Ver Mensaje
Código PHP:
<?
class Foo {
      private 
$a;
 
      public function 
__construct() {
       
$this->$this->procesa ();
       echo 
$this->a;
       
       
$this->=5;
       echo 
$this->b;
      }
 
      private function 
procesa(){
        
$this->10;
      }
      
}
 
$foo = new Foo();
?>
Lo que veo es que estas tratando de asignarle a $this->a el valor de un metodo que no retorna nada.

Código PHP:
<?
class Foo {
      private 
$a;
 
      public function 
__construct() {
       
$this->$this->procesa ();
       echo 
$this->a;
       
       
$this->=5;
       echo 
$this->b;
      }
 
      private function 
procesa(){
        return 
10;
      }
      
}
 
$foo = new Foo();
?>
  #4 (permalink)  
Antiguo 22/08/2009, 12:45
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Raro (URGENTE)

Ahi tienes dos buenas respuestas, ¿no te han resuelto el problema?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 22/08/2009, 13:11
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 1 mes
Puntos: 2534
Respuesta: Raro (URGENTE)

jejeje.... raro....

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 22/08/2009, 13:35
 
Fecha de Ingreso: agosto-2009
Mensajes: 247
Antigüedad: 14 años, 9 meses
Puntos: 10
Respuesta: Raro (URGENTE)

BUENISMO!!!!!!!! gracias a todos!

Se me habia pasado ese error
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 08:29.