Declaración de tipo escalar en PHP 7

Declaración de tipo escalar en PHP 7

PHP

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

Leave a reply