PHP 7, viene con mejoras significativas en el lenguaje, sobre todo dándole fortalezas. ¿Cómo? Bueno, les comparto una entrada donde se explican significativamente que trae de nuevo PHP 7.

Declaraciones de tipo de datos

Esto permite que se puedan verificar los tipos de datos al definir las funciones, de manera que se fuerza a que los argumentos sean corregidos según su tipo.

<?php

 // Default mode
 function sumOfInts( int ...$ints )
 {
  return array_sum($ints);
 }
 var_dump(sumOfInts(2, '3', 4.1));

?>

Tipos de retorno

De igual manera las funciones pueden determinar que tipo de dato devuelven:

<?php

 function arraysSum( array ...$arrays ): array
 {
  return array_map( function( array $array): int {
   return array_sum( $array );
  }, $arrays);
 }
 print_r( arraysSum( [1,2,3], [4,5,6], [7,8,9] ));

?>

Operador para coalescencia de valores nulos

En este caso, permite a los desarrolladores utilizar operadores ternarios invocando de manera implícita el isset.

<?php

 // Fetches the value of $_GET['user'] and returns 'nobody'
 // if it does not exist.
 $username = $_GET['user'] ?? 'nobody';
 // This is equivalent to:
 $username = isset( $_GET['user']) ? $_GET['user'] : 'nobody';
 // Coalescing can be chained: this will return the first
 // defined value out of $_GET['user'], $_POST['user'], and
 // 'nobody'.
 $username = $_GET['user'] ?? $_POST['user'] ?? 'nobody';

?>

Comparaciones

Las comparaciones ahora toman un nuevo nivel, al poder reutilizar los operadores de una nueva forma. Al comparar utilizando los valores de retorno de 0,1,-1 facilita la implementación de funciones de ordenamiento y comparación.

<?php

 // Integers
 echo 1 <=> 1; // 0
 echo 1 <=> 2; // -1
 echo 2 <=> 1; // 1
 // Floats
 echo 1.5 <=> 1.5; // 0
 echo 1.5 <=> 2.5; // -1
 echo 2.5 <=> 1.5; // 1
 // Strings
 echo "a" <=> "a"; // 0
 echo "a" <=> "b"; // -1
 echo "b" <=> "a"; // 1

?>

 Agrupamiento de espacio de nombres

Al utilizar una cantidad determinada de clases, se incrementa las instrucciones de importación de espaciones de nombre, este problema ha sido solucionado con la siguiente característica:

<?php
 use some\namespace\{ClassA, ClassB, ClassC as C};
 use function some\namespace\{fn_a, fn_b, fn_c};
 use const some\namespace\{ConstA, ConstB, ConstC};
?>

Para explorar más sobre las cosas nuevas que trae les dejo el enlace del artículo original que se
encuentra en: http://www.phpclasses.org/blog/post/359-PHP-7-Migration-Guide-Part-2-19-New-Exciting-Features-In-PHP-7.html

Anuncios