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

Operadores aritméticos no funcionan en Clases

Estas en el tema de Operadores aritméticos no funcionan en Clases en el foro de Frameworks y PHP orientado a objetos en Foros del Web. ola PHPriends, tengo un problema con el tema de las clases, y quisiera me dieran una ayudita. Estoy siguiendo las instrucciones de un libro sobre ...
  #1 (permalink)  
Antiguo 02/04/2011, 14:22
 
Fecha de Ingreso: abril-2010
Ubicación: Calama
Mensajes: 58
Antigüedad: 14 años
Puntos: 0
Pregunta Operadores aritméticos no funcionan en Clases

ola PHPriends, tengo un problema con el tema de las clases, y quisiera me dieran una ayudita. Estoy siguiendo las instrucciones de un libro sobre el tema, y en este se presenta el siguiente ejemplo:

Código PHP:
Ver original
  1. class miClase   {
  2.     public $numMayor;
  3.     public function miFuncion($mensaje, $num)   {
  4.         return $mensaje." ".$this->numMayor * $num;
  5.     }
  6. }
  7. $miInstancia = new miClase();
  8. $miInstancia->numMayor = 100;
  9. echo $miInstancia->miFuncion("El resultado es", 3);

El código tal como está funciona muy bien; da el resultado esperado, que es 300. El problema se presenta cuando le cambio el signo de multiplicar por otro. Por ejemplo, si quiero que la función haga una resta ($this->numMayor - $num;), no la hace, y me devuelve solamente el número 3 que le paso a la función. Lo mismo sucede cuando quiero sumar. El código, sin embargo, funciona perfectamente cuando hago una multiplicación y una división.

¿Alguien podría explicarme cuál es el error?

Por otro lado, y siguiendo las instrucciones del libro, traté de crear una clase, apegandome lo máximo posible al ejemplo anterior. Este es el código:

Código PHP:
Ver original
  1. class Edad  {
  2.     public $anioActual;
  3.     public function calcularEdad($mensaje, $anioNacimiento) {
  4.         return $mensaje." ".$this->anioActual - $anioNacimiento;
  5.     }
  6. }
  7. $Jorge = new Edad();
  8. $Jorge->$anioActual = 2011;
  9. echo $Jorge->calcularEdad("Jorge tiene", 1975);

Pero esto me da el siguiente error: Fatal error: Cannot access empty property in... line 8

Por favor necesito que me aclaren el tema...
  #2 (permalink)  
Antiguo 02/04/2011, 14:52
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Operadores aritméticos no funcionan en Clases

Que tal novoweb,

El error es por la precedencia, te dejo los enlaces, al final del segundo link vas a encontrar la solución a tu problema.

http://php.net/manual/es/language.op...precedence.php
http://php.net/manual/es/language.operators.string.php

con respecto al error del segundo ejemplo, tenes un $ de mas, en:

Código PHP:
Ver original
  1. $Jorge->$anioActual = 2011;

debería ser:

Código PHP:
Ver original
  1. $Jorge->anioActual = 2011;

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 02/04/2011, 14:57
 
Fecha de Ingreso: abril-2010
Ubicación: Calama
Mensajes: 58
Antigüedad: 14 años
Puntos: 0
Respuesta: Operadores aritméticos no funcionan en Clases

Cita:
Iniciado por masterpuppet Ver Mensaje
con respecto al error del segundo ejemplo, tenes un $ de mas...
tan simple como eso! XD. muchas gracias amigo. y voi a revisar los enlaces que sugieres. gracias otra vez :D
  #4 (permalink)  
Antiguo 02/04/2011, 15:00
 
Fecha de Ingreso: abril-2010
Ubicación: Calama
Mensajes: 58
Antigüedad: 14 años
Puntos: 0
Respuesta: Operadores aritméticos no funcionan en Clases

mmm un detalle: el problema aora es que no me muestra el texto que debería decir Jorge tiene... tantos años. En vez de eso, muesra 1975, el valor pasado como parámetro.

La idea es que muestre la edad de la persona.
  #5 (permalink)  
Antiguo 02/04/2011, 17:47
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
Respuesta: Operadores aritméticos no funcionan en Clases

Como quedo tu clase?
  #6 (permalink)  
Antiguo 02/04/2011, 18:48
 
Fecha de Ingreso: abril-2010
Ubicación: Calama
Mensajes: 58
Antigüedad: 14 años
Puntos: 0
Respuesta: Operadores aritméticos no funcionan en Clases

Cita:
Iniciado por GatorV Ver Mensaje
Como quedo tu clase?
ok la del primer ejemplo quedó de esta manera:

Código PHP:
Ver original
  1. class miClase   {
  2.     public $numMayor;
  3.     public function miFuncion($mensaje, $num)   {
  4.         return $mensaje." ".($this->numMayor*$num);
  5.     }
  6. }
  7. $miInstancia = new miClase();
  8. $miInstancia->numMayor = 100;
  9. echo $miInstancia->miFuncion("El resultado es", 3);

y la del segundo ejemplo lo dejé de la siguiente manera:

Código PHP:
Ver original
  1. class Edad  {
  2.     public $anioActual;
  3.     public function calcularEdad($mensaje, $anioNacimiento) {
  4.         return $mensaje." ".($this->anioActual - $anioNacimiento);
  5.     }
  6. }
  7. $Jorge = new Edad();
  8. $Jorge->anioActual = 2011;
  9. echo $Jorge->calcularEdad("Jorge tiene", 1975);

Etiquetas: clases
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 17:16.