Nuevas funcionalidades
 
  Declaraciones de tipo escalar
  
   Las declaraciones de tipo
   escalar vienen en dos modos: coercitivo (por defecto) o estricto. Los tipos de parámetros
   siguientes pueden ser forzados (ya sea coercitivo o estricto): los strings
   (string), los enteros (int),
   los decimales (float) y los valores booleanos (bool).
   Complementan los otros tipos introducidos en PHP 5: los nombres de clases, las interfaces,
   los arrays (array) y las funciones invocables (callable).
  
  
  
   Para activar el modo estricto, una sola directiva declare debe ser colocada
   en la parte superior del archivo. Esto significa que el modo estricto de declaración de tipo
   escalar se configura por archivo. La directiva no solo afecta a la
   declaración de parámetros, sino también al tipo de retorno de la función (ver
   las declaraciones de tipo de retorno
   en las funciones de PHP y las que provienen de extensiones).
  
  
   Una documentación completa y ejemplos de declaraciones de tipo escalar
   pueden encontrarse en la referencia: Declaraciones de tipo.
  
  
 
  Declaraciones de tipo de retorno
  
   PHP 7 añade soporte para
   declaraciones de tipo de retorno.
   Similar a las
   declaraciones de tipo de argumento,
   las declaraciones de tipo de retorno especifican el tipo del valor que será devuelto por la función.
   Los mismos
   tipos
   que están disponibles para las declaraciones de tipo de retorno están disponibles para las declaraciones
   de tipo de argumento.
  
  
  
   Una documentación completa y ejemplos de declaraciones de tipo de retorno
   pueden encontrarse en la referencia: Declaraciones de tipo de retorno.
  
  
 
  El operador de fusión nula
  
   El operador de fusión nula (??) se ha añadido como un azúcar
   sintáctico para los casos de uso más comunes de necesitar una tercera conjunción
   con la función isset(). Devuelve el primer operando si existe
   y no tiene un valor null; y devuelve el segundo operando en caso contrario.
  
  
  
  
 
  El operador nave espacial
  
   El operador nave espacial se utiliza para comparar dos expresiones.
   Devuelve -1, 0 o 1 cuando $a es respectivamente menor,
   igual o mayor que $b. Las comparaciones se realizan
   según
   las reglas de comparación de tipos
   habituales de PHP.
  
  
  
  
 
  Arrays constantes con define()
  
   Los arrays (Array) constantes ahora pueden ser definidos
   con la función define(). En PHP 5.6, solo podían
   ser definidos con const.
  
  
  
 
  Clases anónimas
  
   Se ha añadido soporte para clases anónimas a través de la instanciación
   new class. Esto puede ser utilizado en lugar de definir
   toda una clase para objetos desechables:
  
  
  
   La documentación completa puede encontrarse en
   la referencia de clases anónimas.
  
  
 
  Sintaxis de escape de punto de código Unicode
  
   Toma un punto de código Unicode en forma hexadecimal, en una cadena
   entre comillas dobles o una sintaxis heredoc, para convertirlo
   en UTF-8. Cualquier punto de código válido es aceptado,
   siendo opcionales los ceros iniciales.
  
  
  
 
  
  
   El método Closure::call() se ha vuelto más eficiente.
   Una forma más corta de enlazar temporalmente una clausura al ámbito de un
   objeto e invocarla.
  
  
  
 
  
  
   Esta funcionalidad tiene como objetivo garantizar una mayor seguridad cuando
   se realiza la deserialización de objetos con datos no confiables.
   Evita posibles inyecciones de código permitiendo al desarrollador
   crear una lista blanca de las clases que pueden ser deserializadas.
  
  
  
 
  
  
   La nueva clase IntlChar expone
   la funcionalidad ICU adicional. La clase en sí define un número de métodos
   estáticos y constantes que pueden ser utilizados para manipular los
   caracteres Unicode.
  
  
  
   Para usar esta clase, debe instalar la extensión
   Intl.
  
  
 
  Expectativas
  
   Las expectativas son
   una mejora retrocompatible a la antigua función
   assert(). Ofrecen aserciones de muy bajo costo en el código de producción y permiten lanzar excepciones
   personalizadas cuando la aserción falla.
  
  
   Aunque la antigua API sigue siendo mantenida por razones de
   compatibilidad, la función assert() ahora es
   una construcción del lenguaje, permitiendo que el primer parámetro sea
   una expresión en lugar de un string a evaluar o un
   bool a probar.
  
  
  
   Se pueden encontrar más detalles sobre esta funcionalidad, incluyendo cómo configurarla
   en entornos de desarrollo y producción, en la sección de expectativas
   en la referencia de la función assert().
  
  
 
  Agrupar las declaraciones use
  
   Las clases, funciones y constantes importadas desde el mismo namespace
   ahora pueden ser agrupadas en una sola instrucción use.
  
  
  
 
  Expresiones de retorno de generador
  
   Esta funcionalidad se basa en la funcionalidad de generador introducida en PHP 5.5.
   Permite usar una instrucción return en un generador
   para devolver una expresión final (el retorno por referencia no está permitido).
   Este valor puede ser extraído usando el nuevo método
   Generator::getReturn(), que solo puede ser usado cuando
   el generador ha terminado de producir valores.
  
  
  
   Es muy práctico poder devolver explícitamente un valor final
   de un generador. Esto permite que un valor final, susceptible de ser manejado
   especialmente por el código cliente que ejecuta el generador, sea devuelto por el generador
   (posiblemente a partir de alguna forma de cálculo de corrutina). Esto es mucho más simple
   que forzar al código cliente a verificar primero si el valor final ha sido producido,
   y luego manejar específicamente el valor cuando sea el caso.
  
  
 
  Delegación de generador
  
   Los generadores ahora pueden ser delegados automáticamente a otro generador,
   un objeto Traversable o un array,
   usando yield from, sin necesidad de recurrir a un código repetitivo.
  
  
  
 
  División de enteros con intdiv()
  
   La nueva función intdiv() devuelve el resultado de la división
   de enteros realizada sobre sus operandos.
  
  
  
 
  Opciones de sesión
  
   La función session_start() ahora acepta un array
   de opciones que anulan
   las directivas de configuración de sesión
   configuradas manualmente en el archivo php.ini.
  
  
   Estas opciones también han extendido el soporte para la opción
   session.lazy_write,
   que está habilitada por defecto y hace que PHP sobrescriba los archivos de sesión
   solo si los datos de sesión han sido actualizados, y la opción
   read_and_close, que solo puede ser pasada a la función
   session_start() para indicar si los datos de sesión
   deben ser leídos antes de que la sesión se cierre sin cambios.
  
  
   Por ejemplo, para establecer session.cache_limiter
   a private y cerrar inmediatamente la sesión después de leerla:
  
  
  
 
  
  
   La nueva función preg_replace_callback_array()
   permite que el código se escriba de manera más limpia usando la función
   preg_replace_callback(). Antes de PHP 7, las funciones de devolución de llamada (callback)
   debían ser ejecutadas por expresión regular, lo que requería que la función de devolución de llamada
   estuviera salpicada con muchas ramificaciones.
  
  
   Ahora, las funciones de devolución de llamada pueden ser registradas para cada expresión
   regular usando un array asociativo, donde la clave es una expresión regular
   que tiene la función de devolución de llamada como valor.
  
  
 
  Funciones CSPRNG
  
   Se han añadido dos nuevas funciones para generar criptográficamente enteros
   y strings seguras de manera multiplataforma:
   random_bytes() y random_int().
  
  
 
  
   La función list() ahora puede desempaquetar objetos que implementan
   ArrayAccess
  
  
   Anteriormente, la función list() no podía operar al 100% sobre objetos
   que implementaban ArrayAccess. Ahora, esto ha sido corregido.
  
  
 
  Otras funcionalidades
  
   - 
    
     Se ha añadido acceso a los miembros de la clase (atributos y métodos) durante la clonación.
     Ejemplo, (clone $foo)->bar().