IntroducaoO PHP 7.1 foi lancado dia 01/12/2016. Seguem as principais novidades do PHP 7.1: Especificacao de tipos nulos e retornos nulos Melhorias na construcao list Acesso a indices negativos de strings Visibilidade de constantes Multiplo catch Type hint iterable Ajustes na variavel $this Criacao de Closure a partir de callable Float com mais precisao Melhorias no modulo CurlEspecificacao de tipos nulos e retornos nulosNo PHP 7, foi introduzido o recurso de declaracao de tipos escalares e declaracao de retornos de funcao, porem, ainda nao havia suporte para especificar parametros obrigatorios que aceitassem valores nulos (null), ou para especificar retornos de funcoes que poderiam ser nulos, ou para especificar que funcoes que nao retornassem nada (void). Ja no PHP 7.1 foram disponibilizadas novas sintaxes para estas necessidades.A declaracao de parametros de funcoes que aceitam valores nulos so era permitida em parametros opcionais ate a versao 7, conforme exemplo:function exemplo(int $p1, int $p2 = null): int { ...}No exemplo acima, a funcao recebe dois parametros inteiros e retorna um inteiro, mas o segundo parametro, alem de ser opcional, tambem pode ter valor nulo.Na versao 7.1 passa a ser possivel especificar um parametro obrigatorio e tipado, mas que pode ter valor nulo. Isso e feito usando o sinal "?" antes do nome do tipo, conforme exemplo:function exemplo(int $p1, ?int $p2): int { ...}No exemplo acima, a funcao recebe dois parametros obrigatorios. O primeiro precisa ser sempre inteiro, mas o segundo pode ser um inteiro ou nulo.Uma observacao e que continua sendo possivel especificar um tipo de um parametro com valor default null, inclusive em conjunto com a nova sintaxe, conforme exemplo:function exemplo(int $p1, ?int $p2 = null): int { ...}O sinal "?" tambem pode ser usado para especificar o tipo de retorno de funcao que pode ser nulo, conforme exemplo:function exemplo(): ?int { ...}E para especificar uma funcao que nao retorna nada (ou seja, sempre retorna null), basta utilizar a palavra void, conforme exemplo:function exemplo(): void { ...}Ao especificar que uma funcao tem retorno nulo, ela passa a nao poder retornar nenhum valor que nao seja null. Isso garante maior legibilidade do codigo e seguranca de que nenhum retorno da funcao sera utilizado.Melhorias na construcao listA construcao da linguagem list ganhou duas melhorias: a possibilidade de extrair arrays com dados associativos e uma sintaxe alternativa simplificada.Para quem nao conhece o list, ele e capaz de atribuir valores de um array diretamente para varias variaveis, conforme exemplo:$array = array(123, 456, 789);list($a, $b, $c) = $array;echo $a; // Mostra 123echo $b; // Mostra 456echo $c; // Mostra 789Ou seja, a posicao "0" do array e atribuida para variavel $a, a posicao "1" do array e atribuida para variavel $b e a posicao "2" do array e atribuida para variavel $c. Tambem era possivel omitir a variavel da construcao do list, caso ela nao tenha importancia:$array = array(123, 456, 789);list($a, , $c) = $array;echo $a; // Mostra 123echo $c; // Mostra 789A primeira melhoria do list no PHP 7.1 e que ele passa a aceitar arrays associativos e, para isso, e preciso especificar a chave que sera obtida