Novedades Técnicas en PHP 7
En esta página:
- Web Ref. Github PHP 7.0.0 RC1
- Operador Ternario Isset
- Declaración de Tipo Scalar
- Declaraciones de Tipo de Retorno
- Clases Anónimas
- Escape de Código UTF8 Unicode en un Punto de nuestro Código
- Método de Clausura call()
- Filtrado con unserialize()
- La Clase IntlChar
- Agrupar Declaraciones
- Generador de Retorno de Expresiones
- División de Enteros con intdiv()
- Opciones en la función session_start()
Según Dmitry Stogov – Ingeniero y Jefe de Rendimiento y Desempeño de PHP en Zend Technologies y Desarrollador principal de PHP 7:
- La Actualización en las Librerías de PHP 5.7 a PHP 7 esta prevista para ser Lanzada en Octubre del 2015.
- A la hora de Definir el nombre para la versión de PHP se decidió mediante a una votación del equipo y sera la PHP 7 y no PHP6. Muchos esperábamos que por seguimiento lógico la versión que debería seguir era la versión PHP 6, pero en 2010 PHP 6 quedo olvidada y esta pretendía dar soporte Unicode a la manipulación de texto para PHP.
Web Ref. Github PHP 7.0.0 RC1
Ahora veremos las Principales Novedades ya agregadas a la versión PHP 7:
Operador Ternario Isset
Podemos retirar el operador isset, haciendo así menos extenso nuestro código:
1 2 3 4 5 6 7 |
// Antes de PHP 7: $route = isset($_GET['route']) ? $_GET['route'] : 'index'; // De PHP 7 en adelante: $route = $_GET['route'] ?? 'index'; |
Declaración de Tipo Scalar
Podemos dejarlo por defecto o usar el modo estricto:
Coercitivo:
1 2 3 4 5 6 7 8 9 |
// Modo Coercitivo (por Default) function sumaDeInts(int ...$ints) { return array_sum($ints); } var_dump(sumaDeInts(2, '3', 4.1)); // int(9) |
Estricto:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// Modo Estricto declare(strict_types=1); function multiply(float $x, float $y) { return $x * $y; } function add(int $x, int $y) { return $x + $y; } var_dump(multiply(2, 3.5)); // float(7) var_dump(add('2', 3)); // Fatal error: Argument 1 passed to add() must be of the type integer, string given... |
Declaraciones de Tipo de Retorno
Con la ayuda de las declaraciones de tipo de retorno se especifica el tipo de retorno en relación con el método, función o cierre:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
function arraysSuma(array ...$arrays): array { return array_map(function(array $array): int { return array_sum($array); }, $arrays); } print_r(arraysSuma([1,2,3], [4,5,6], [7,8,9])); /* Salida Array ( [0] => 6 [1] => 15 [2] => 24 ) */ |
Clases Anónimas
Otra Manera de crear Clases en nuestro código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// Antes de PHP 7 class Logger { public function log($msg) { echo $msg; } } $util->setLogger(new Logger()); // A Partir de PHP 7 $util->setLogger(new class { public function log($msg) { echo $msg; } }); |
Escape de Código UTF8 Unicode en un Punto de nuestro Código
Esta nueva función ofrece la posibilidad de generar una codificación UTF-8 Unicode en un Heredoc o una cadena entre comillas dobles:
1 2 3 4 5 |
echo "\u{aa}"; // ª echo "\u{0000aa}"; // ª (Igual que el anterior, pero con ceros al inicio) echo "\u{9999}"; // 香 |
Método de Clausura call()
Con el nuevo método call() se obtiene un código mas compacto y con mejor performance:
1 2 3 4 5 6 7 8 9 10 11 12 |
class A {private $x = 1;} // Antes de PHP 7 $getXCB = function() {return $this->x;}; $getX = $getXCB->bindTo(new A, 'A'); // Cierre intermedio echo $getX(); // 1 // A Partir de PHP 7 $getX = function() {return $this->x;}; echo $getX->call(new A); // 1 |
Filtrado con unserialize()
Esta característica añade un nuevo nivel de seguridad de PHP 7. Está diseñado para mejorar la serialización de objetos y datos no confiables:
1 2 3 4 5 6 7 8 9 10 |
// Convierte todos los Objetos en Clases Incompletas $data = unserialize($foo, ["allowed_classes" => false]); // Convierte todos los Objetos en Clases PHP Incompletas excepto MiClase y MiClase2 $data = unserialize($foo, ["allowed_classes" => ["MiClase", "MiClase2"]); // Por Defecto $data = unserialize($foo, ["allowed_classes" => true]); |
La Clase IntlChar
La nueva clase IntlChar se utiliza para definir una cantidad de métodos estáticos y constantes utilizados para la manipulación de caracteres Unicode. Su objetivo es exponer la funcionalidad adicional de las librerias ICU:
1 2 3 4 5 |
printf('%x', IntlChar::CODEPOINT_MAX); // 10ffff echo IntlChar::charName('@'); // Arroba tipo comercial var_dump(IntlChar::ispunct('!')); // bool(true) |
Agrupar Declaraciones
Con esta nueva función de PHP 7, es posible agrupar varias declaraciones de uso. Es muy conveniente para la importación de múltiples clases con el mismo namespace:
1 2 3 4 5 6 7 8 9 |
// Antes de PHP 7 use some\namespace\ClassA; use some\namespace\ClassB; use some\namespace\ClassC as C; // A Partir de PHP 7 use some\namespace\{ClassA, ClassB, ClassC as C}; |
Generador de Retorno de Expresiones
Un valor puede ser recuperado con el método: Generator::getReturn():
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
$gen = (function() { yield 1; yield 2; return 3; })(); foreach ($gen as $val) { echo $val, PHP_EOL; } echo $gen->getReturn(), PHP_EOL; // salida: // 1 // 2 // 3 |
División de Enteros con intdiv()
Otra característica importante de PHP 7 es la función intDiv (). Este divide y nos devuelve un entero.
1 2 3 |
var_dump(intdiv(10, 3)); // int(3) |
Opciones en la función session_start()
Con esta característica, es posible pasar una matriz de opciones para la función session_start ():
1 2 3 |
session_start(['cache_limiter' => 'private']); // establece session.cache_limiter como privado |
Estas son algunas de las Principales Características que nos Traerá PHP 7 este Octubre 2015.
También puedes ver los cambios(actualizaciones en las funciones, librerias, etc. ya existentes), y mas Novedades en el link:
https://github.com/tpunt/PHP7-Reference
Espero les sea de mucha utilidad este Articulo.
Hasta nuestro siguiente Artículo o Tutorial !
- Articulos
- 24-08-2015
- 24-08-2015
- Crear un Post - Eventos Devs - Foro
Social
Redes Sociales (Developers)
Redes Sociales (Digital)