Introduzido a primeira versão beta do novo ramo da linguagem de programação PHP 8. O lançamento está agendado para 26 de novembro. Ao mesmo tempo, versões corretivas do PHP 7.4.9, 7.3.21 e
7.2.33, que eliminou erros e vulnerabilidades acumuladas.
apoio argumentos de função nomeados, permitindo que você passe valores para a função em relação aos nomes, ou seja, Você pode passar argumentos em qualquer ordem e definir argumentos opcionais. Por exemplo, "array_fill(start_index: 0, num: 100, valor: 50)".
Ao chamar métodos permitido utilizando o operador “?”, que permite iniciar uma chamada somente se o método estiver presente, o que evita verificações desnecessárias para retorno do valor “nulo”. Por exemplo, "$dateAsString = $booking->getStartDate()?->asDateTimeString()";
apoio tipos de união, definindo coleções de dois ou mais tipos (por exemplo, “public function foo(Foo|Bar $input): int|float;”).
apoio atributos (anotações) que permitem vincular metadados (como informações de tipo) a classes sem usar a sintaxe Docblock.
Suporte de expressão partida, que, diferentemente do switch, pode retornar valores, suportar condições de combinação, usar comparações estritas de tipos e não exigir uma especificação de “quebra”.
Mapa fraco para criar objetos que podem ser sacrificados durante a coleta de lixo (por exemplo, para armazenar caches desnecessários).
Oportunidade usando a expressão “::class” para objetos (análogo a chamar get_class()).
Oportunidade definições no bloco catch de exceções que não estão vinculadas a variáveis.
Oportunidade deixando uma vírgula após o último elemento da lista de parâmetros da função.
Nova interface Stringável para identificar quaisquer tipos de string ou dados que possam ser convertidos em uma string (para a qual o método __toString() está disponível).
Novo recurso str_contains (), um análogo simplificado de strpos para determinar a ocorrência de uma substring, bem como as funções str_starts_with() e str_ends_with() para verificar correspondências no início e no final de uma string.
Função adicionada fdiv(), que executa uma operação de divisão sem gerar erro ao dividir por zero.
Mudado lógica de junção de strings. Por exemplo, a expressão 'echo "sum:" . $a + $b' foi anteriormente interpretado como 'echo ("sum: " . $a) + $b', e no PHP 8 será tratado como 'echo "sum: " . ($a + $b)'.
Apertado verificar operações aritméticas e de bits, por exemplo, as expressões "[] % [42]" e "$object + 4" resultarão em erro.
Implementado um algoritmo de classificação estável no qual a ordem de valores idênticos é preservada em diferentes execuções.