Declaración de tipo escalar en PHP 7
Las declaraciones de tipo escalar son de dos tipos: coercitivo (por defecto) y estricto.
Ahora se pueden forzar los siguientes tipos para parámetros (tanto coercitiva como estrictamente):
- Cadenas de caracteres (string)
- Números enteros (int)
- Números decimales (float)
- Booleanos (bool)
Estos se añaden a los tipos introducidos en PHP 5: nombres de clases, interfaces, arrays y callables.
Ejemplos
Ejemplo de declaración para tipo integer
Esta función comprueba que los parámetros recibidos sean del tipo número entero integer:
function concatenar(int ...$valores){ $result = ''; foreach ($valores as $valor) $result += $valor; return $result; } var_dump(concatenar(2, 4)); //int(6)
Si intentamos pasarle otro tipo de valor, por ejemplo un decimal:
function concatenar(int ...$valores){ $result = ''; foreach ($valores as $valor) $result += $valor; return $result; } var_dump(concatenar(2, 4.2)); //int(6)
Nos devolverá la suma, pero acompañado del siguiente mensaje de alerta: Warning: A non-numeric value encountered in C:\xampp\htdocs\index.php on line 19
Si intentamos pasarle otro tipo de valor, por ejemplo un string:
function concatenar(int ...$valores){ $result = ''; foreach ($valores as $valor) $result += $valor; return $result; } var_dump(concatenar(2, 4.2, 'a'));
Nos devolverá un error fatal: Fatal error: Uncaught TypeError: Argument 3 passed to concatenar() must be of the type int, string given, called inC:\xampp\htdocs\index.php on line 34 and defined in C:\xampp\htdocs\index.php:19 Stack trace: #0 C:\xampp\htdocs\index.php(34): concatenar(2, 4, ‘a’) #1 {main} thrown in C:\xampp\htdocs\index.php on line 34