Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: braulio-- en 19 Abril 2009, 17:15 PM

Título: Calculadora en php orientada a objetos.
Publicado por: braulio-- en 19 Abril 2009, 17:15 PM
Miren el code de la calculadora que acabo de hacer en php orientado a objetos.
Código (php) [Seleccionar]

<head><title>Calculadora en php orientada a objetos</title></head><body>
<h1>Calculadora en php orientado a objetos</h1>
<?
Class calculadora {
function calculadora ( $numero1 , $numero2 ) {
$this->numerouno = htmlentities($numero1,ENT_QUOTES) ;
$this ->numerodos = htmlentities($numero2,ENT_QUOTES);
return 0;
}
function suma(){
$resultado = $this->numerouno + $this->numerodos;
echo "$this->numerouno + $this->numerodos es igual a $resultado <br>";
return 0;
}
function resta(){
$resultado = $this->numerouno - $this->numerodos;
echo "$this->numerouno - $this->numerodos es igual a $resultado <br>";
return 0;
}
function multiplica(){
$resultado = $this->numerouno * $this->numerodos;
echo "$this->numerouno x $this->numerodos es igual $resultado <br>";
return 0;
}
function divide()
{
if ( $this->numerodos==0)
{
echo "No se puede dividir entre cero";
return 1;
}
else
{
$resultado = $this->numerouno / $this->numerodos;
echo "$this->numerouno entre $this->numerodos es igual a $resultado <br> " ;
return 0;
}
}
}
$numerouno = $_POST['numerouno'];
$numerodos = $_POST['numerodos'];
if (isset($numerouno) AND isset($numerodos))
{
$objeto = new calculadora($numerouno,$numerodos);
$objeto->suma();
$objeto->resta();
$objeto->multiplica();
$objeto->divide();
}
?>
<form action=index.php method=POST>
Primer numero : <input type=text name=numerouno><br>
Segundo numero : <input type=text name=numerodos><br><input type=submit>
</form></body>

Le vendrá bien a la gente que este aprendiendo este paradigma de la programacion en este lenguaje.
El htmlentities lo he puesto por si acaso.
Si no tienen ganas de ponerlo en su server la he puesto aqui:
http://ab.onlinewebshop.net/index.php (http://ab.onlinewebshop.net/index.php)
Título: Re: Calculadora en php orientada a objetos.
Publicado por: дٳŦ٭ en 19 Abril 2009, 20:55 PM
Solo va a funcionar con el safemod en off, te recomendaria cambiar las variables por $_post. Saludos
Título: Re: Calculadora en php orientada a objetos.
Publicado por: braulio-- en 19 Abril 2009, 22:12 PM
¿Porque solo funciona con safe mode off?
Título: Re: Calculadora en php orientada a objetos.
Publicado por: дٳŦ٭ en 20 Abril 2009, 15:07 PM
<input type=text name=numerouno>

function calculadora ( $numero1 , $numero2 ) {

Y rectifico, no es el safemod, son las registrer globals..

Uso de Register Globals
http://us.php.net/manual/es/security.globals.php

Y por cierto, tu clase no va a trabajar en php6 por lo mismo.

Saludos  ;)

EDIT

Ya vi...

$numerouno = $_POST['numerouno'];
$numerodos = $_POST['numerodos'];


;D Bueno retiro lo dicho pero lo dejo por si alguien no lo sabía. Buen trabajo.
Título: Re: Calculadora en php orientada a objetos.
Publicado por: braulio-- en 20 Abril 2009, 17:40 PM
Ah vale. Me extraño, pero de todas formas yo no se mucho.
Gracias.
Título: Re: Calculadora en php orientada a objetos.
Publicado por: Anibal784 en 21 Abril 2009, 02:01 AM
Perdón, no tiene nada que ver con el código de php sino con la división, está mal:
0/10 = 0
10/0 = error
0/0 = error

Espero que se entienda
Título: Re: Calculadora en php orientada a objetos.
Publicado por: ^Tifa^ en 21 Abril 2009, 02:38 AM
Try .. Catch?

Código (php) [Seleccionar]


function divide() {

try {

if (($this->numerouno / $this->numerodos || $this->numerodos / $this->numerouno) == 0) {

throw new Exception("Error no se puede dividir entre cero");

}

} catch(Exception $e) {

echo $e->getMessage();
return 1;
}

$resultado = $this->numerouno / $this->numerodos;
echo "$this->numerouno entre $this->numerodos es igual a $resultado <br> " ;
return 0;

}


Título: Re: Calculadora en php orientada a objetos.
Publicado por: Anibal784 en 21 Abril 2009, 02:47 AM
¿para?
Código (php) [Seleccionar]

// Código php, pero en realidad matemática de 5 grado
function dividir($numero1, $numero2){
    if($numero2 == 0){
        echo "No se puede dividir por 0 <br />";
        return FALSE;
    }
    $resultado = $numero1 / $numero2;
    echo "$numero1 dividido $numero2 = $resultado<br />";
    return TRUE;
}

Lo único importante en una división es que $numero2 (el denominador) no sea 0, para el resto da igual. De todas formas, existe la posibilidad que se envíen letras y se que existen en php funciones para comprobar esas situaciones que realmente escapan a ésto. Lo que estoy tratando de decir es ¿por qué no permiten dividir 0 por algún valor que es matemáticamente válido?
Título: Re: Calculadora en php orientada a objetos.
Publicado por: braulio-- en 21 Abril 2009, 14:46 PM
Cita de: Anibal784 en 21 Abril 2009, 02:01 AM
Perdón, no tiene nada que ver con el código de php sino con la división, está mal:
0/10 = 0
10/0 = error
0/0 = error

Espero que se entienda
Es cierto, no me pare a pensar.
He modificado el code.
Gracias anibal.