Blog de Gonzalo

MATCH EN PHP 8

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',
};

Compartir en twitter