Hace un tiempo os hablé de las nuevas funciones en php 8 quería explicar la expresión match en php 8 con las que se puede sustituir el switch case.
Características de la expresión match en PHP 8
- Match es una expresión, por lo tanto su resultado puede ser almacenado en una variable o retornado.
- Cada variante de Match solo acepta una expresión de una sola línea y por lo tanto no necesita break como en el caso de switch.
- Las comparaciones de Match son estrictas en tipo. Es decir '8.0' (cadena) no coincidirá con 8.0 (número).
- Si quieres coincidir con más de un valor, puedes separarlos por comas: 'double', 'float'.
Esto se va a ver mejor con un ejemplo:
Antes de php 8
switch (gettype($value)) {
case 'array':
return $this->exportArray($value);
case 'integer':
return $this->format->integer($value);
case 'double':
case 'float':
return $this->format->float($value);
case 'string':
return $this->format->string($value);
case 'boolean':
return $this->format->bool($value ? 'true' : 'false');
case 'NULL':
case 'null':
return $this->format->null();
default:
return '';
}
Después de php 8
return match(gettype($value)) {
'array' => $this->exportArray($value),
'integer' => $this->format->integer($value),
'double', 'float' => $this->format->float($value),
'string' => $this->format->string($value),
'boolean' => $this->format->bool($value ? 'true' : 'false'),
'NULL', 'null' => $this->format->null(),
default => '',
};
Otra novedad de match es que se pueden comparar varios valores:
return match($value) {
'manzana','plátano' => 'fruta',
'tomate','pepino' => 'hortalizas',
};