Lançado PHP 8.4: o que mudou e por que é importante
A comunidade de desenvolvedores recebeu o tão aguardado release PHP 8.4 — uma nova versão principal de uma das linguagens de programação web mais populares. A atualização trouxe uma série de melhorias significativas, incluindo os tão esperados property hooks, visibilidade assimétrica e uma otimização substancial de desempenho. Vamos analisar as principais mudanças que todo desenvolvedor PHP deve conhecer.
1. Property Hooks (Hooks de propriedades)
A novidade mais marcante é a possibilidade de definir getters e setters diretamente na declaração da propriedade da classe, sem escrever métodos separados. Isso simplifica radicalmente o trabalho com campos computados ou validados.
class User{ public string $name { set => $this->name = trim($value); get => ucfirst($this->name); }}Antes, para essa lógica, era necessário escrever métodos separados getName() e setName(). Os property hooks tornam o código mais limpo e legível.
2. Visibilidade assimétrica
Agora é possível definir diferentes níveis de acesso para leitura e escrita de uma propriedade. Por exemplo, leitura pública, mas escrita protegida:
class Post{ public private(set) string $title;}Isso elimina a necessidade de criar getters e setters apenas para controle de acesso, mantendo o encapsulamento.
3. JIT aprimorado e desempenho
No PHP 8.4, o compilador JIT (Just-In-Time) foi significativamente reformulado. Os desenvolvedores do núcleo melhoraram a heurística de decisão de compilação e reduziram a sobrecarga na execução de caminhos de código quentes. De acordo com testes preliminares, o ganho de desempenho em benchmarks sintéticos varia de 10% a 25% em comparação com o PHP 8.3.
- Aceleração de loops e funções recursivas
- Processamento aprimorado de grandes arrays
- Redução do consumo de memória no modo JIT em até 15%
4. Nova sintaxe: desestruturação de arrays com tipos
Foi adicionada a possibilidade de especificar tipos ao desestruturar arrays:
[$name, $age] = ['João', 30]; // era[ string $name, int $age ] = ['João', 30]; // tornou-seIsso melhora a análise estática e torna o código autodocumentado.
5. Mudanças na biblioteca padrão
- Novas funções:
array_find(),array_find_key(),array_any()earray_all()— para um trabalho mais conciso com arrays. - Atualização do PCRE2: a biblioteca de expressões regulares foi atualizada para a versão 10.44, corrigindo vários erros raros.
- Funções obsoletas: foram declaradas obsoletas
session_set_cookie_params()(em favor deini_set()) e várias funções internas.
6. Status de obsolescência (Deprecations)
No PHP 8.4, foram marcadas como obsoletas:
- Alteração do tipo de retorno via
#[\\ReturnTypeWillChange]— agora é necessária uma declaração explícita. - Chamada de
isset()em não-arrays (por exemplo