primeira versão beta da nova versão da linguagem de programação PHP 8. O lançamento está previsto para 26 de novembro. Ao mesmo tempo, foram formadas versões corretivas do PHP 7.4.9, 7.3.21 e
7.2.33, nas quais foram corrigidos erros acumulados e vulnerabilidades.
Principais PHP 8:
- , cuja implementação permitirá aumentar o desempenho.
- argumentos nomeados em funções, permitindo passar valores para a função vinculados a nomes, ou seja, é possível passar argumentos em ordem arbitrária e definir argumentos opcionais. Por exemplo, «array_fill(start_index: 0, num: 100, value: 50)».
- Ao chamar métodos uso do operador «?», que permite iniciar a chamada apenas se o método estiver presente, evitando verificações desnecessárias no retorno do valor «null». Por exemplo, «$dateAsString = $booking->getStartDate()?->asDateTimeString()»;
- Suporte , que definem coleções de dois ou mais tipos (por exemplo «public function foo(Foo|Bar $input): int|float;»).
- Suporte (anotações), que permitem vincular metadados (por exemplo, informações sobre tipos) a classes sem usar a sintaxe Docblock.
- Suporte a expressões , que, ao contrário do switch, podem retornar valores, suportam a combinação de condições, usam comparação estrita de tipos e não exigem a declaração de «break».
$result = match($input) {
0 => «hello»,
‘1’, ‘2’, ‘3’ => «world»,
}; - para definição de classes, permitindo combinar a definição do construtor e das propriedades.
- Novo tipo de valores de retorno — .
- Novo tipo — , que pode ser usado para definir como a função recebe parâmetros de diferentes tipos.
- Expressão para tratamento de exceções.
- para criação de objetos que podem ser descartados durante a coleta de lixo (por exemplo, para armazenamento de caches opcionais).
- uso da expressão «::class» para objetos (semelhante à chamada get_class()).
- definição em bloco catch de exceções não vinculadas a variáveis.
- deixar a vírgula após o último elemento na lista de parâmetros da função.
- Uma nova interface para identificação de quaisquer tipos de string ou dados que podem ser convertidos em string (para os quais o método __toString() está disponível).
- Nova função , um análogo simplificado de strpos para determinar a ocorrência de uma substring, assim como as funções str_starts_with() e str_ends_with() para verificar correspondências no início e no final da string.
- Adicionada a função , realizando a operação de divisão sem gerar erro em caso de divisão por zero.
- a lógica de concatenação de strings. Por exemplo, a expressão ‘echo «soma: » . $a + $b’ antes era interpretada como ‘echo («soma: » . $a) + $b’, enquanto que no PHP 8 será processada como ‘echo «soma: » . ($a + $b)’.
- checagem de operações aritméticas e bitwise, como as expressões ‘[] % [42]’ e ‘$object + 4’ gerando erro.
- algoritmo de ordenação estável, onde a ordem de valores iguais é mantida entre execuções diferentes.
Fonte: opennet.ru
