Estructura de archivos con enumeraciones en PHP

Clase 10 de 23Curso de Fundamentos de PHP

Resumen

Trabajar con una estructura organizada desde el inicio es crucial para cualquier proyecto en PHP. Cuando se improvisa o no se presta atención suficiente al orden inicial, puedes encontrarte con dificultades significativas a largo plazo. La buena noticia es que esto se puede prevenir utilizando prácticas adecuadas desde la configuración inicial.

¿Por qué es importante estructurar correctamente desde el inicio?

Al iniciar un proyecto, establecer una estructura clara ayuda a mantener el código fácil de mantener y escalar. Improvisar y omitir este paso conduce habitualmente a complicaciones futuras.

En PHP, comenzar por una única entrada desde un archivo llamado index.php y posteriormente derivar la funcionalidad hacia múltiples archivos con responsabilidades específicas es una buena práctica. Esto permite identificar rápidamente dónde modificar aspectos específicos sin alterar accidentalmente otros elementos.

¿Qué es y cómo funciona una enumeración en PHP?

Una enumeración en PHP ayuda a restringir los valores posibles para una propiedad, evitando que se introduzcan datos incorrectos. Por ejemplo, si el proyecto establece que un curso puede ser gratuito o de pago, la enumeración limita explícitamente a esos dos valores y nada más.

¿Cómo se define y utiliza un enum?

La definición de una enumeración (enum) en PHP puede hacerse como sigue:

enum TipoCurso {
  case FREE;
  case PAGO;
}

Luego, este tipo enumerado se usa en una clase para restringir estrictamente la propiedad a un valor que pertenezca al enum definiendo su valor por defecto:

protected TipoCurso $tipo = TipoCurso::FREE;

¿Qué sucede si se ingresa un valor incorrecto?

Si intentas definir un valor que no esté incluido en el enum, por ejemplo escribiendo un string cualquiera como "gratis", PHP te indicará un error debido a la incompatibilidad de tipos. La ventaja aquí es mantener la integridad del sistema, evitando errores humanos o entradas accidentales inapropiadas.

¿Cómo implementar la lógica asociada a enum con métodos en PHP?

Para entregar información más útil y legible al usuario, se recomienda agregar métodos asociados directamente en la enumeración. Aquí hay un ejemplo claro con el método etiqueta():

public function etiqueta(): string {
  return match($this) {
    self::FREE => 'Curso gratuito',
    self::PAGO => 'Curso de pago',
  };
}

Con este método, mostrar información descriptiva en vista se vuelve sencillo. Basta con llamar a la propiedad desde una instancia:

$this->tipo->etiqueta();

¿Cómo dividimos responsabilidades en la estructura?

Una estrategia eficaz para gestionar nuestro código es asignar claramente responsabilidades a diferentes archivos:

  • Archivo index.php: se encarga de inicializar y llamar a todas las clases necesarias.
  • Archivo específico para tipos o enums: mantiene la lógica específica para los valores admitidos.
  • Archivo de curso: se dedica exclusivamente a la funcionalidad relacionada con un curso.

Esta metodología permite que cada pieza funcione independientemente, simplificando considerablemente futuros ajustes. A medida que el proyecto crece, es más fácil mantener o mejorar cualquier sección sin interferir con otras áreas del código.

¿Qué desafíos podemos realizar para practicar?

Una excelente forma de consolidar estos conocimientos es llevar a cabo un ejercicio práctico:

  • Implementa esta estructura en un nuevo proyecto PHP.
  • Define claramente enumeraciones y métodos asociados.
  • Crea archivos separados con responsabilidades específicas.

Comparte en los comentarios tu implementación final, así podemos revisar conjuntamente tus avances y aclarar posibles dudas del proceso.