Declaración de tipo de parámetro en una función PHP
Las funciones de PHP aceptan la declaración de tipo en los parámetros que reciben. Desde la versión 5 de PHP, si la función recibe un tipo no aceptado, retornará un Fatal Error; en cambio, desde la versión 7 de PHP, si esto sucede lanzará una excepción TypeError.
Tipos aceptados
Tipo | Descripción | Versión de PHP mínima |
---|---|---|
nombre de clase/interfaz |
El parámetro debe ser una instanceof del nombre de la clase o interfaz dada. |
PHP 5.0.0 |
self | El parámetro debe ser una instanceof de la misma clase donde está definido el método. Esto solamente se puede utilizar en clases y métodos de instancia. | PHP 5.0.0 |
array | El parámetro debe ser un array. | PHP 5.1.0 |
callable | El parámetro debe ser un callable válido. | PHP 5.4.0 |
bool | El parámetro debe ser un valor de tipo boolean. | PHP 7.0.0 |
float | El parámetro debe ser un número de tipo float. | PHP 7.0.0 |
int | El parámetro debe ser un valor de tipo integer. | PHP 7.0.0 |
string | El parámetro debe ser un string. | PHP 7.0.0 |
Ejemplo
EL siguiente ejemplo muestra de una forma sencilla como declarar el tipo requerido a cada parámetro que recibe la función.
function concatenar(int $value1, string $value2){ return $value1.$value2; } var_dump(concatenar(3, 'casas')); // string(6) "3casas"
Si los datos introducidos no coinciden, pero estamos con tipificación débil, no retornará un error.
function concatenar(int $value1, string $value2){ return $value1.$value2; } var_dump(concatenar(true, 'casas')); // string(6) "1casas"
En cambio, si estamos con tipificación estricta, retornará el error: Fatal error: Uncaught TypeError: Argument 1 passed to concatenar() must be of the type int, bool given, called in…
declare(strict_types=1); function concatenar(int $value1, string $value2){ return $value1.$value2; } var_dump(concatenar(true, 'casas')); // Fatal error: Uncaught TypeError: Argument 1 passed to concatenar() must be of the type int, bool given, called in...