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