Novedades Técnicas en PHP 7
3 minuto(s)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 !
También en las categorías, etiquetas, búsquedas y más.
En versiones anteriores, se veian con alto disparejo.
Seguimos trabajando en mejorar la comunidad.



Seguimos trabajando las 24 horas del día para brindarte la mejor experiencia en la comunidad.
Hemos corregido el problema y ahora la web no muestra esa barra horizontal y se ve en su tamaño natural.
Seguimos trabajando las 24 horas del día, para mejorar la comunidad.
Seguimos trabajando las 24 horas y 365 días del año para mejorar tu experiencia en la comunidad.

Seguimos trabajando para brindarte le mejor experiencia en Nube Colectiva.
Social
Redes Sociales (Developers)
Redes Sociales (Digital)