Skip to content

Commit ba3a2ba

Browse files
committed
#19 - php
1 parent 18da19b commit ba3a2ba

File tree

1 file changed

+98
-0
lines changed

1 file changed

+98
-0
lines changed
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
<?php
2+
// Resumen sobre Enumeraciones
3+
// Las enumeraciones (Enums) en PHP 8.1 permiten definir un tipo de dato con un conjunto finito de valores posibles.
4+
// Son útiles para representar datos categóricos que tienen un número limitado de valores, como los días de la semana o el estado de un pedido.
5+
6+
enum DiasSemana: int
7+
{
8+
case Lunes = 1;
9+
case Martes = 2;
10+
case Miercoles = 3;
11+
case Jueves = 4;
12+
case Viernes = 5;
13+
case Sabado = 6;
14+
case Domingo = 7;
15+
}
16+
17+
// Función para obtener el nombre del día a partir de un número entero
18+
function obtenerNombreDia(int $numeroDia): string
19+
{
20+
return DiasSemana::from($numeroDia)->name;
21+
}
22+
23+
// Ejemplo de uso de la función obtenerNombreDia
24+
echo obtenerNombreDia(1); // Salida: Lunes
25+
echo "\n";
26+
echo obtenerNombreDia(7); // Salida: Domingo
27+
28+
// Dificultad Extra: Sistema de gestión del estado de pedidos
29+
enum EstadoPedido: string
30+
{
31+
case Pendiente = 'Pendiente';
32+
case Enviado = 'Enviado';
33+
case Entregado = 'Entregado';
34+
case Cancelado = 'Cancelado';
35+
}
36+
37+
class Pedido
38+
{
39+
private int $id;
40+
private EstadoPedido $estado;
41+
42+
public function __construct(int $id, EstadoPedido $estado = EstadoPedido::Pendiente)
43+
{
44+
$this->id = $id;
45+
$this->estado = $estado;
46+
}
47+
48+
public function enviar(): void
49+
{
50+
if ($this->estado === EstadoPedido::Pendiente) {
51+
$this->estado = EstadoPedido::Enviado;
52+
} else {
53+
echo "El pedido no se puede enviar.\n";
54+
}
55+
}
56+
57+
public function entregar(): void
58+
{
59+
if ($this->estado === EstadoPedido::Enviado) {
60+
$this->estado = EstadoPedido::Entregado;
61+
} else {
62+
echo "El pedido no se puede entregar.\n";
63+
}
64+
}
65+
66+
public function cancelar(): void
67+
{
68+
if ($this->estado !== EstadoPedido::Entregado) {
69+
$this->estado = EstadoPedido::Cancelado;
70+
} else {
71+
echo "El pedido no se puede cancelar.\n";
72+
}
73+
}
74+
75+
public function obtenerDescripcionEstado(): string
76+
{
77+
return "El estado actual del pedido {$this->id} es {$this->estado->value}.\n";
78+
}
79+
}
80+
81+
// Ejemplo de interacción con diferentes pedidos
82+
$pedido1 = new Pedido(1);
83+
$pedido2 = new Pedido(2);
84+
85+
$pedido1->enviar();
86+
echo $pedido1->obtenerDescripcionEstado(); // Salida: El estado actual del pedido 1 es Enviado.
87+
88+
$pedido1->entregar();
89+
echo $pedido1->obtenerDescripcionEstado(); // Salida: El estado actual del pedido 1 es Entregado.
90+
91+
$pedido2->cancelar();
92+
echo $pedido2->obtenerDescripcionEstado(); // Salida: El estado actual del pedido 2 es Cancelado.
93+
94+
$pedido3 = new Pedido(3);
95+
$pedido3->enviar();
96+
$pedido3->cancelar(); // Esto no debería ser posible, y se verá reflejado en el mensaje.
97+
98+
echo $pedido3->obtenerDescripcionEstado(); // Salida: El estado actual del pedido 3 es Enviado.

0 commit comments

Comments
 (0)