Miren el code de la calculadora que acabo de hacer en php orientado a objetos.
<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)
Solo va a funcionar con el safemod en off, te recomendaria cambiar las variables por $_post. Saludos
¿Porque solo funciona con safe mode off?
<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.
Ah vale. Me extraño, pero de todas formas yo no se mucho.
Gracias.
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
Try .. Catch?
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;
}
¿para?
// 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?
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.