Novos Recursos
 
  Declarações de tipos escalares
  
   Declarações de tipos escalares
   vêm em dois sabores: coercivo (padrão) e estrito. Para parâmetros os seguintes tipos
   agora podem ser forçados (tanto coercivamente quanto estritamente): strings
   (string), inteiros (int), números
   de ponto flutuante (float) e booleanos (bool). Eles
   incrementam os outros tipos introduzidos no PHP 5: nomes de classe, interfaces,
   array e callable.
  
  
  
   Para habilitar o modo estrito, uma única diretiva declare deve ser colocada no
   topo do arquivo. Isto significa que a rigorosidade de tipificação para escalares é
   configurada por arquivo. Esta diretiva não afeta somente as declarações de tipo
   de parâmetros, mas também do tipo de retorno de funções (veja
   declarações de tipo de retorno),
   funções internas do PHP e funções de extensões
   carregadas.
  
  
   A documentação completa e exemplos de declarações de tipo escalar podem ser encontradas
   na referência de
   declarações de tipo
   .
  
  
 
  Declarações de tipo de retorno
  
   O PHP 7 adiciona suporte a
   declarações de tipo de retorno.
   Similar às
   declarações de tipo de argumento
   as declarações de tipo de retorno especificam o tipo do valor que será
   retornado por uma função. Os mesmos
   tipos
   estão disponíveis para declarações de tipo de retorno assim como estão disponíveis para declarações
   de tipo de argumentos.
  
  
  
   A documentação completa e exemplos de declarações de tipo de retorno podem ser encontradas
   na referência de
   declarações de tipo de retorno
   .
  
  
 
  Operador de coalescência nula
  
   O operador de coalescência nula (??) foi adicionado como
   um truque sintático para o caso trivial de precisar usar um ternário em
   conjunto com a função isset(). Ele retorna o primeiro operando
   se este existir e não for null; caso contrário retorna o segundo operando.
  
  
  
  
 
  Operador "nave espacial" (spaceship)
  
   O operador nave espacial é utilizado para comparar duas expressões. Ele retorna -1, 0
   ou 1 quando $a for respectivamente menor que, igual a ou maior
   que $b. As comparações são feitas de acordo com as já conhecidas
   regras de comparação de tipos do PHP.
  
  
  
  
 
  Arrays de constantes utilizando a função define()
  
   Constantes do tipo array agora podem ser definidas com a função
   define(). No PHP 5.6 elas só poderiam ser definidas com
   const.
  
  
  
 
  Classes Anônimas
  
   O suporte a classes anônimas foi adicionado utilizando new
   class. Estas podem ser utilizadas no lugar de definições completas de classes para
   objetos descartáveis.
  
  
  
   A documentação completa pode ser encontrada na
   referência de classes anônimas.
  
  
 
  Sintaxe de escape de códigos Unicode
  
   Toma um código Unicode em sua forma hexadecimal e imprime
   esse código em UTF-8 em uma string delimitada por aspas ou um heredoc. Qualquer código
   válido é aceito, com os zeros à esquerda sendo opcionais.
  
  
  
 
  
  
   O método Closure::call() é uma forma mais eficaz
   e abreviada de associar temporariamente um escopo de objeto a uma closure e invocá-la.
  
  
  
 
  
  
   Esse recurso busca prover uma melhor segurança ao desserializar objetos
   com informações não confiáveis. Ele impede possíveis injeções de código ao permitir que o
   desenvolvedor liste as classes que podem ser desserializadas.
  
  
  
 
  
  
   A nova classe IntlChar busca expor funcionalidades adicionais
   da ICU. A classe define alguns métodos estáticos e
   constantes que podem ser utilizados para manipular caracteres Unicode.
  
  
  
   Para utilizar esta classe a extensão Intl deve estar instalada.
  
  
 
  Expectations
  
   Expectations são
   aprimoramentos compatíveis com versões anteriores para a antiga função assert().
   Permitem asserções com custo zero em código em produção e
   fornecem a capacidade de lançar exceções personalizadas quando a asserção falha.
  
  
   Enquanto a API antiga continua sendo mantida por motivos de compatibilidade,
   assert() agora é um construtor de linguagem, permitindo que
   o primeiro parâmetro seja uma expressão, em vez de somente uma string a ser
   avaliada ou um valor bool a ser testado.
  
  
  
   Mais detalhes sobre este recurso, incluindo como configurá-lo tanto no
   ambiente de desenvolvimento quanto em produção, podem ser encontrados na página do manual
   do construtor de linguagem assert();
  
  
 
  Agrupamento de declarações use
  
   Classes, funções e constantes importadas do mesmo namespace,
   agora podem ser agrupadas em uma única declaração use
  
  
  
 
  Expressões de Retorno nos Geradores
  
   Este recurso foi construído em cima da funcionalidade de geradores introduzida no PHP 5.5.
   Ele permite que uma declaração return seja usada dentro de um
   gerador para permitir que uma expressão final seja retornada (retornar por
   referência não é permitido). Este valor pode ser obtido usando o novo método
   Generator::getReturn(), que deve ser usado somente
   quando o gerador terminar a geração dos valores.
  
  
  
   A habilidade de retornar explicitamente o valor final de um gerador é
   conveniente de se ter. Ela permite que o retorno do valor final do
   gerador (pode ser de uma computação concorrente) possa ser manipulado
   especificamente pelo código cliente que executa o gerador. Isso é bem mais
   simples que forçar o código cliente a primeiro checar se o valor final
   já foi gerado, e em caso afirmativo, manipular esse valor especificamente.
  
  
 
  Delegação de geradores
  
   Geradores agora podem delegar para outros geradores,
   objetos Traversable ou array
   automaticamente, sem a necessidade de escrever código repetitivo no gerador externo
   utilizando o construtor yield from
  
  
  
 
  Divisão de inteiros com intdiv()
  
   A nova função intdiv() realiza a divisão de inteiros
   de seus operandos e a retorna.
  
  
  
 
  Opções de sessões
  
   A função session_start() agora aceita um array de
   opções que sobrescrevem as
   diretivas de configuração de sessões
   normalmente configuradas no php.ini.
  
  
   Estas opções também foram expandidas para suportar
   session.lazy_write, que está
   habilitada por padrão e faz com que o PHP somente sobrescreva um arquivo de sessão se
   a informação da sessão foi modificada, e read_and_close, que é
   uma opção que só pode ser passada para a função session_start() para
   indicar que os dados da sessão devem ser lidos e, em seguida, a sessão deve
   ser imediatamente fechada sem alterações.
  
  
   Por exemplo, para configurar
   session.cache_limiter para
   private e fechar imediatamente a sessão após
   lê-la:
  
  
  
 
  
  
   A nova função preg_replace_callback_array() permite
   que o código seja escrito de forma mais limpa com a utilização da função
   preg_replace_callback(). Antes do PHP 7,
   callbacks que precisam ser executadas por expressões regulares exigiam que a
   função de callback fosse poluída com muitas ramificações.
  
  
   Agora, funções de callback podem ser registradas em cada expressão regular utilizando um
   array associativo, onde a chave é uma expressão regular e o valor é uma
   função de callback.
  
  
 
  Funções CSPRNG
  
   Duas novas funções foram adicionadas para gerar inteiros e strings
   criptograficamente seguros de maneira multiplataforma:
   random_bytes() e random_int().
  
  
 
  
   A função list() pode sempre desempacotar objetos que implementam
   ArrayAccess
  
  
   Antes a função list() não garantia corretude
   em operações com objetos que implementam ArrayAccess.
   Isso foi corrigido.
  
  
 
  Outros Recursos
  
   - 
    
     Acesso a membros de classe na clonagem foi adicionado,
     por exemplo, (clone $foo)->bar().