Skip to content

Commit 6fb0669

Browse files
committed
1 parent 21dad3c commit 6fb0669

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
<?php
2+
function callbackExample(array $numeros, callable $callback) {
3+
$resultado = 0;
4+
foreach ($numeros as $numero) {
5+
$resultado = $callback($resultado, $numero);
6+
}
7+
return $resultado;
8+
}
9+
10+
$numeros = [10, 9, -5, 3, 2, 1, 0];
11+
12+
function numberSum($a, $b) {
13+
return $a + $b;
14+
}
15+
16+
echo "Vamos a ver un ejemplo simple de Callback. Pasaremos un array de numeros y obtendremos la suma de todo sus elementos\n";
17+
18+
echo "El resultado de la suma de los numeros es: " . callbackExample($numeros, 'numberSum');
19+
20+
21+
// Extra
22+
23+
echo '\n\nEjercicio Extra\n\n';
24+
25+
function procesarPedido($plato, callable $confirmacion, callable $listo, callable $entrega) {
26+
27+
echo "Procesando el pedido del plato: $plato\n";
28+
$confirmacion($plato);
29+
30+
31+
$tiempoPreparacion = rand(1, 10);
32+
sleep($tiempoPreparacion);
33+
34+
35+
$listo($plato);
36+
37+
38+
$tiempoEntrega = rand(1, 10);
39+
sleep($tiempoEntrega);
40+
41+
42+
$entrega($plato);
43+
}
44+
45+
46+
function confirmarPedido($plato) {
47+
echo "Pedido confirmado: $plato\n";
48+
}
49+
50+
function platoListo($plato) {
51+
echo "El plato está listo: $plato\n";
52+
}
53+
54+
function entregarPedido($plato) {
55+
echo "El plato ha sido entregado: $plato\n";
56+
}
57+
58+
59+
function leerEntrada($mensaje) {
60+
echo $mensaje;
61+
$entrada = trim(fgets(STDIN));
62+
return $entrada;
63+
}
64+
65+
66+
echo "Simulador de pedidos de un restaurante\n\n";
67+
68+
while (true) {
69+
$plato = leerEntrada("Ingrese el nombre del plato (o escriba 'salir' para terminar): ");
70+
if (strtolower($plato) == 'salir') {
71+
break;
72+
}
73+
procesarPedido($plato, 'confirmarPedido', 'platoListo', 'entregarPedido');
74+
echo "\n";
75+
}
76+
77+
echo "Fin de la simulación de pedidos.\n";

0 commit comments

Comments
 (0)