Hay ocasiones en las que queramos especificar el tipo de variable que le vamos a pasar a una función, para ello pondremos delante de la variable pasada como parámetro el tipo de dato que deseamos recibir. También si ponemos al principio la función declare(strict_types = 1); obligará a introducir los tipos de valores que la función pide, y evitamos posibles errores futuros.
Ejm
declare(strict_types = 1);
function sumarEnteros(int $entero1, int $entero2){
return $entero1 + $entero2;
}
$resultado = sumarEnteros(2,5);
$resultado2 = sumarEnteros(2,5.4);
$resultado2 = sumarEnteros(2,"Hola Mundo");
echo $resultado;
echo "<br />";
echo $resultado2;
echo "<br />";
// echo $resultado3; DARÁ UN ERROR
Podemos hacer que además el tipo de dato devuelto sea el que le propongamos a la función, para ello después de los paréntesis ponemos dos puntos (:) seguidos del tipo de dato que deseamos devuelva.
Ejm
declare(strict_types = 1);
function sumarEnteros(int $entero1, int $entero2) : int
{
return ($entero1 + $entero2)/2;
}
$resultado = sumarEnteros(2,5);
$resultado2 = sumarEnteros(2,5.4);
$resultado2 = sumarEnteros(2,"Hola Mundo");
echo $resultado;
echo "<br />";
echo $resultado2;
echo "<br />";
// Esta sintaxis devolverá un error ya que devuelve un tipo de dato float y estamos pidiendo que devuelva un entero
También podemos hacer que la función nos devuelva un valor entero o un valor flotante, para ello separamos el tipo de dato que queremos devuelva con el símbolo (|), de la siguiente forma.
Ejm
declare(strict_types = 1);
function sumarEnteros(int $entero1, int $entero2) : int | float
{
return ($entero1 + $entero2)/2;
}
$resultado = sumarEnteros(2, 5);
$resultado2 = sumarEnteros(2, 6);
echo $resultado;
echo "<br />";
echo $resultado2;
echo "<br />";
Tipos de datos que podemos especificar
Los tipos de datos que podemos especificar son:
- int
- float
- string
- bool
- array
- object
- null