PHP 8.4: As principais novidades que você precisa conhecer

Novas funcionalidades foram incluídas, como hooks para propriedades, suporte aprimorado para HTML5, dentre outros.

 Escrevendo testes automatizados com PHPUnit

O PHP 8.4 trouxe uma série de recursos inovadores que prometem transformar a forma como os desenvolvedores escrevem e mantêm o código. Se você é programador ou está envolvido no desenvolvimento web, as melhorias dessa versão com certeza vão impactar seu dia a dia, simplificando tarefas, melhorando a legibilidade e trazendo novas possibilidades para otimizar a performance. Vamos explorar as principais mudanças e entender como elas podem fazer a diferença no seu trabalho.

Propriedades com Hooks: Menos Getters e Setters, mais clareza no código

Uma das adições mais aguardadas do PHP 8.4 são as property hooks, que permitem definir diretamente os comportamentos de acesso e modificação das propriedades de uma classe. Em vez de criar métodos getters e setters redundantes, você agora pode usar os hooks para definir o comportamento de cada propriedade diretamente na classe.

Exemplo prático:

class BookViewModel {
    public function __construct(
        private array $authors,
    ) {}

    public string $credits {
        get {
            return implode(', ', array_map(
                fn (Author $author) => $author->name,
                $this->authors,
            ));
        }
    }
}

Com isso, a criação de métodos redundantes é evitada, tornando o código mais limpo e mais fácil de manter. Além disso, é possível definir hooks de leitura e escrita nas propriedades, o que abre novas possibilidades para controle dinâmico dos dados.

Sintaxe simplificada: Agora você pode encadear métodos sem parênteses

Uma das melhorias que mais entusiastaram a comunidade foi a remoção da necessidade de parênteses ao encadear métodos. Em versões anteriores, a sintaxe era mais verbosa, obrigando o uso de parênteses para chamadas encadeadas, como no exemplo:

$name = (new ReflectionClass($objectOrClass))->getShortName();

No PHP 8.4, isso foi simplificado, permitindo que o código ficasse mais limpo e intuitivo:

$name = new ReflectionClass($objectOrClass)->getShortName();

Essa mudança reduz a verbosidade e melhora a legibilidade, especialmente em códigos que fazem múltiplas chamadas encadeadas.

Visibilidade Assimétrica: Maior controle sobre propriedades

Outra inovação importante é a introdução da visibilidade assimétrica para propriedades. Isso permite que você defina diferentes níveis de visibilidade (como public, protected, ou private) para leitura e escrita de uma mesma propriedade. O exemplo clássico é aquele em que uma propriedade é pública para leitura, mas só pode ser modificada de dentro da classe:

class BookViewModel {
    public private(set) Author $author;
}

Isso oferece mais flexibilidade e controle sobre os dados da sua aplicação, permitindo que você esconda a lógica de modificação enquanto mantém o acesso de leitura aberto.

Nova função array_find: Simplificando a busca em arrays

O PHP 8.4 também introduziu a função array_find, que permite localizar rapidamente o primeiro item de um array que atenda a uma condição especificada. Essa função economiza tempo e melhora a legibilidade do código, evitando a necessidade de criar loops manuais.

$firstMatch = array_find($posts, fn(Post $post) => strlen($post->title) > 5);

Junto com array_find, há outras funções úteis como array_find_key, array_any e array_all, que podem facilitar ainda mais a manipulação de arrays.

Suporte ao HTML5: Nova classe \Dom\HTMLDocument

A manipulação de HTML com PHP ganha um grande avanço no PHP 8.4, com a introdução da classe \Dom\HTMLDocument, que agora oferece suporte completo ao HTML5. Essa classe facilita a análise e manipulação de código HTML moderno, oferecendo uma alternativa mais robusta ao antigo \DOMDocument.

Exemplo de uso:

$doc = \Dom\HTMLDocument::createFromString($contents);

Isso ajuda a lidar com documentos HTML5 de maneira mais eficiente e compatível, sem a necessidade de bibliotecas externas.

Depreciação de tipos implícitos Nulos

Uma mudança importante, embora mais voltada para a migração de código, é a depreciação do comportamento de tipagem implícita nula. Em versões anteriores, o PHP permitia que parâmetros com valor padrão null fossem tratados como se fossem de tipo ?Type. Agora, é necessário declarar explicitamente o tipo nulo, o que melhora a clareza e a segurança do código.

Exemplo:

function save(?Book $book = null) {}

Com isso, o código se torna mais seguro, garantindo que não haja interpretações automáticas que possam gerar problemas no futuro.

Conclusão

O PHP 8.4 é uma das versões mais significativas dos últimos anos, trazendo melhorias que não só simplificam a vida do desenvolvedor, mas também abrem portas para um desenvolvimento mais limpo, eficiente e moderno. Desde os property hooks até o suporte completo para HTML5, cada uma das novas funcionalidades tem o potencial de transformar a maneira como programadores lidam com tarefas cotidianas. Se você ainda não experimentou essas novas funcionalidades, agora é o momento ideal para começar a integrar o PHP 8.4 no seu fluxo de trabalho.

Prepare-se para um código mais ágil, limpo e robusto com o PHP 8.4!