Una de las novedades de versión 8.1 de php es que se añade el tipo enums (enumerados) que son un tipo de datos definido por el usuario y que consiste en un conjunto de valores posibles. De igual manera que los enum en mysql. Los enums se construyen sobre clases y objetos. Se comportan de forma similar y tienen casi los mismos requisitos. Los enums comparten los mismos espacios de nombres que las clases, las interfaces y los traits.
Ejemplo declaración de enums en php:
enum tipoVehiculos
{
case Coche;
case Camion;
case Moto;
case Furgoneta;
}
//Para mostrar uno de los enums:
$vehiculo = tipoVehiculos::Coche;
var_dump(tipoVehiculos->name);
//Mostrará "Coche"
En el caso anterior se puede ver una declaración normal. Pero también se pueden definir backed Enums, o enums respaldados, si se quiere dar un valor equivalente a un escalar a cualquier caso. Sin embargo, los enums respaldados solo pueden tener un tipo, ya sea int o string pero nunca ambos.
enum tipoVehiculos2: string
{
case Coche = 'Coche';
case Camion = 'Camion';
case Moto = 'Moto';
case Furgoneta = 'Furgo';
}
//Para mostrar uno de los enums:
$vehiculo = tipoVehiculos2::Furgoneta;
var_dump(tipoVehiculos->value);
//Mostrará "Furgo"
Todos los casos diferentes de un enum respaldado deben tener un valor único. Y nunca puedes mezclar enums puros y respaldados.
Os invito a ver los enums en mysql.