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

En el ejemplo anterior el resultado puede ser guardado en una variable en vez de hacer return