Comunidad PHPeros

Lenguajes => PHP => (POO) Programación Orientada a Objetos => Mensaje iniciado por: Physlet en 13 de Mayo de 2010, 21:58:12 pm

Título: ¿Me ayudan con esto?
Publicado por: Physlet en 13 de Mayo de 2010, 21:58:12 pm
Bien, estoy estudiando más o menos la parte teórica de la Programación Orientada a Objetos y esta aplicación que les voy a mostrar fue 'más o menos' un algoritmo que nos pidieron que hicieramos para iniciar las clases de algoritmos. Yo quise adaptarlo al PHP pero no me sale bien, a ver si algún usuario experimentado me puede ayudar con esto, mencionarme errores y demás... Pienso que si domino esto, ya no se me hará tanto lío hacer algo más complejo, porque tendré la base.

Aquí está el código que había hecho:

<?php

class Suma {
public $val1;
public $val2;

public function asignar_valores($a, $b){
$this->val1 = $b;
$this->val2 = $b;
return false;
}

public function sumar_valores(){
$suma = $a + $b;
return $suma;
}
}
?>

Esa es básicamente la clase, entonces lo que yo quería era darle valor a $val1, $val2 que son los datos que entra el usuario, que este luego los asigna a $a y $b, realiza la operación que le pedí y me muestra el resultado.

Para esta segunda parte hice lo siguiente:

<?php
if($_GET){
$calculo = new Suma();
$calculo->asignar_valores($_GET['v1'], $_GET['v2']);
$res = $calculo->sumar_valores();
echo "Respuesta: ".$res;
} ?>

Entonces lo que me muestra el programa es: "Respuesta: 0", es decir que no se le asignan los valores cuando lo hago mediante get y no entiendo bien por qué... ¿Me ayudan?
Título: Re:¿Me ayudan con esto?
Publicado por: westwest en 13 de Mayo de 2010, 22:08:50 pm
Veo 2 fallos, el primero:
Citar
public function asignar_valores($a, $b){
      $this->val1 = $b;
      $this->val2 = $b;
      return false;
   }
Eso debería ser $a, me parece que es un error al escribir y no de entender :P

La función sumar es bastante desastrosa...
$suma = $a + $b;
A esa función no se le envían los parametros $a y $b, por lo que al no exister cobran valor 0, 0+0 = 0...
Si por algo usamos $this->algo = 'valor'; es para crear una variable "global", a la que acceder con cada función de la clase, por eso sería así:

public function sumar_valores(){
$suma = $this->val1 + $this->val2;
return $suma;
}
Título: Re:¿Me ayudan con esto?
Publicado por: Physlet en 13 de Mayo de 2010, 22:25:35 pm
Anda, tuve ese mismo error cuando hacía el algoritmo (el segundo que mencionaste, obvio) xD... Menos mal que no fue el del parcial.
Muuuuuuuuuuuuuuuuuuuuuuuuuuuchísimas gracias.

Tengo como 12 problemas más que la profe quiere que hagamos en algoritmos, trataré de adaptarlos a PHP igual :P!