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