Makrosites

Suas ideias em realidade digital!

PHP 8.4: principais mudanças, compatibilidade e cuidados ao atualizar

PHP 8.4: principais mudanças, compatibilidade e cuidados ao atualizar >

O PHP 8.4 é uma atualização importante da linguagem PHP e traz recursos que impactam diretamente a forma como desenvolvedores escrevem classes, manipulam propriedades, trabalham com DOM, organizam código e atualizam sistemas existentes.

Entre as principais novidades estão os property hooks, a visibilidade assimétrica, uma API DOM atualizada, melhorias de performance, correções de bugs e ajustes gerais na linguagem. Segundo o anúncio oficial do PHP, a versão 8.4 inclui novos recursos, melhorias, correções e limpeza geral da linguagem.

Neste artigo, você vai entender o que muda no PHP 8.4, quais recursos merecem atenção, quais cuidados tomar antes de atualizar e como preparar seu site, sistema ou API PHP para rodar com mais segurança nessa versão.

Resumo prático: antes de atualizar para PHP 8.4, teste seu sistema em ambiente separado, revise logs, verifique dependências, extensões, Composer e possíveis avisos de depreciação.

O que é o PHP 8.4?

O PHP 8.4 é uma versão moderna da linguagem PHP, lançada como uma atualização relevante dentro da família PHP 8. Ela adiciona novos recursos de linguagem e melhorias que podem ajudar em projetos novos, APIs, sistemas orientados a objetos e aplicações que precisam de melhor organização de código.

Entre os destaques estão:

A documentação oficial informa que o PHP 8.4 traz property hooks, asymmetric visibility, API DOM atualizada, melhorias de performance, correções e limpeza geral da linguagem.

Por que atualizar para PHP 8.4?

Atualizar a versão do PHP pode trazer melhorias de desempenho, correções de bugs, novos recursos e mais tempo de suporte. Em projetos que ficam muitos anos na mesma versão, a atualização também ajuda a evitar dependência de versões antigas e sem manutenção.

Porém, atualizar sem testar pode quebrar sistemas antigos. Por isso, o processo precisa ser feito com cuidado.

Motivos para considerar a atualização:

1. Property hooks no PHP 8.4

Property hooks são um dos recursos mais comentados do PHP 8.4. Eles permitem adicionar lógica diretamente ao acessar ou modificar uma propriedade de uma classe.

Antes, era comum criar métodos get e set para controlar leitura e escrita de valores. Com property hooks, parte dessa lógica pode ficar diretamente na propriedade.

Exemplo conceitual:

<?php

class Usuario
{
    public string $nome {
        set {
            $this->nome = trim($value);
        }
    }
}

Nesse exemplo, sempre que o valor de nome for definido, o PHP pode aplicar uma regra antes de armazenar.

Atenção: property hooks são úteis, mas não devem ser usados para esconder regras complexas demais dentro de propriedades. Use com clareza para manter o código fácil de entender.

Quando property hooks podem ajudar?

Property hooks podem ser úteis em situações como:

Em sistemas mais simples, talvez você não precise usar esse recurso imediatamente. Em projetos orientados a objetos mais robustos, ele pode ajudar bastante.

2. Visibilidade assimétrica em propriedades

A visibilidade assimétrica permite controlar separadamente quem pode ler e quem pode alterar uma propriedade. Na prática, você pode permitir leitura pública, mas restringir escrita para dentro da própria classe.

Exemplo:

<?php

class Pedido
{
    public private(set) string $status = 'novo';

    public function aprovar(): void
    {
        $this->status = 'aprovado';
    }
}

Nesse caso, o valor de status pode ser lido publicamente, mas só pode ser alterado dentro da classe. O anúncio oficial do PHP mostra essa ideia como uma forma de reduzir métodos getters quando a intenção é apenas expor leitura sem permitir modificação externa.

Por que isso é útil?

Antes do PHP 8.4, era comum criar uma propriedade privada e um método público para leitura.

<?php

class Pedido
{
    private string $status = 'novo';

    public function getStatus(): string
    {
        return $this->status;
    }
}

Com visibilidade assimétrica, em alguns casos você pode reduzir esse código.

Isso não significa que getters e setters desapareceram. Eles ainda podem ser úteis quando existe regra de negócio mais complexa.

3. Nova API DOM com suporte melhor a HTML5

O PHP 8.4 também traz uma API DOM atualizada. Ela melhora o suporte a documentos HTML5 e adiciona recursos mais modernos para trabalhar com HTML e XML.

A nova API DOM fica disponível no namespace Dom, com classes como Dom\HTMLDocument e Dom\XMLDocument.

Esse recurso pode ser útil para:

4. Objeto BcMath\Number

O PHP 8.4 adiciona uma abordagem orientada a objetos para trabalhar com números de precisão arbitrária por meio de BcMath\Number.

Antes, era comum usar funções como bcadd e bccomp. Agora, o PHP 8.4 oferece uma forma mais moderna para certos cenários.

Isso pode ser útil em sistemas que trabalham com:

5. Novas funções para arrays

O PHP 8.4 também adiciona funções úteis para trabalhar com arrays. Entre elas estão:

Essas funções facilitam operações comuns, como encontrar um item, verificar se algum elemento atende uma condição ou confirmar se todos os elementos cumprem uma regra.

Exemplo conceitual:

<?php

$usuarios = [
    ['nome' => 'Ana', 'ativo' => true],
    ['nome' => 'João', 'ativo' => false],
];

$existeInativo = array_any($usuarios, function ($usuario) {
    return $usuario['ativo'] === false;
});

Em versões anteriores, esse tipo de verificação normalmente exigiria um foreach manual ou função auxiliar.

6. Melhorias em PDO

O PHP 8.4 também traz melhorias relacionadas a PDO, incluindo classes específicas por driver em alguns casos, como Pdo\MySql e Pdo\Sqlite.

Para a maioria dos projetos existentes, o uso tradicional de PDO continua funcionando. Porém, em projetos novos, essas melhorias podem abrir caminho para código mais específico por banco de dados.

7. Melhorias de performance e correções

Como toda versão nova, o PHP 8.4 também traz melhorias internas, correções de bugs e ajustes gerais. Isso pode beneficiar aplicações em produção, especialmente quando combinadas com boas práticas como OPcache, consultas otimizadas, cache e versões atualizadas de extensões.

Mesmo assim, performance real depende do projeto. Um sistema com consultas SQL lentas, falta de índices e retorno excessivo de dados continuará lento mesmo usando uma versão nova do PHP.

Cuidados antes de atualizar para PHP 8.4

Atualizar diretamente em produção não é recomendado. O ideal é criar um ambiente de teste parecido com o servidor real.

Antes de atualizar, confira:

Checklist de atualização para PHP 8.4

  1. Faça backup dos arquivos e do banco de dados;
  2. Crie ambiente de homologação ou teste;
  3. Atualize o PHP primeiro fora da produção;
  4. Rode o sistema com error_reporting(E_ALL) em ambiente controlado;
  5. Verifique logs de erro e avisos de depreciação;
  6. Atualize dependências com Composer quando necessário;
  7. Teste login, API, upload, relatórios e rotinas automáticas;
  8. Confirme extensões PHP usadas pelo projeto;
  9. Ative OPcache no ambiente de produção;
  10. Faça a troca final em horário de menor impacto.

Como testar compatibilidade antes da atualização

Um teste simples é rodar o projeto em ambiente local ou homologação com PHP 8.4 e acompanhar os logs.

<?php

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

Use isso apenas em ambiente de desenvolvimento. Em produção, mantenha erros ocultos e salvos em log.

Também confira a versão do PHP pelo terminal:

php -v

E as extensões carregadas:

php -m

Composer e dependências no PHP 8.4

Se seu projeto usa Composer, verifique se as dependências aceitam PHP 8.4.

composer show

Você também pode testar atualizações:

composer update

Em produção, evite atualizar dependências sem testar antes. Faça isso em ambiente separado, verifique se tudo continua funcionando e só depois aplique no servidor real.

Extensões PHP que você deve conferir

Muitos sistemas quebram após atualização não por causa do código principal, mas porque alguma extensão não foi instalada na nova versão.

Extensões comuns:

Possíveis problemas após atualizar

Depois de atualizar para PHP 8.4, alguns problemas podem aparecer:

Por isso, os logs são seus melhores aliados durante a atualização.

Como reduzir risco ao atualizar

Para reduzir problemas, siga uma estratégia gradual:

PHP 8.4 melhora automaticamente qualquer sistema?

Não necessariamente. O PHP 8.4 pode trazer melhorias internas e recursos modernos, mas a performance e estabilidade do sistema ainda dependem da qualidade do código, das consultas SQL, da configuração do servidor e das práticas de cache.

Se o sistema tem consulta sem índice, listagem sem paginação ou arquivos muito pesados, a atualização ajuda pouco. O ideal é combinar versão atualizada com boas práticas de performance.

Exemplo de código usando visibilidade assimétrica

Abaixo temos um exemplo simples de classe usando leitura pública e escrita privada:

<?php

class ApiResponse
{
    public private(set) int $statusCode;

    public function __construct(int $statusCode)
    {
        $this->statusCode = $statusCode;
    }

    public function alterarStatusInternamente(int $statusCode): void
    {
        $this->statusCode = $statusCode;
    }
}

$response = new ApiResponse(200);

echo $response->statusCode;

Esse tipo de recurso pode ajudar a criar objetos mais expressivos e com menos métodos repetitivos.

Exemplo de array_any no PHP 8.4

Imagine uma lista de permissões:

<?php

$permissoes = ['usuarios.listar', 'usuarios.criar', 'pedidos.listar'];

$podeCriarUsuario = array_any($permissoes, function ($permissao) {
    return $permissao === 'usuarios.criar';
});

Esse tipo de função deixa verificações simples mais diretas.

Erros comuns ao atualizar para PHP 8.4

1. Atualizar direto em produção

Esse é o erro mais perigoso. Sempre teste antes.

2. Ignorar extensões PHP

Se uma extensão usada pelo sistema não estiver instalada na nova versão, a aplicação pode quebrar.

3. Não verificar Composer

Dependências antigas podem não aceitar PHP 8.4.

4. Não olhar logs

Logs mostram erros, depreciações e falhas que podem passar despercebidas.

5. Usar recursos novos em sistema antigo sem planejamento

Antes de usar property hooks ou visibilidade assimétrica, confirme se todo o ambiente roda PHP 8.4.

Checklist rápido antes de publicar em produção

Conclusão

O PHP 8.4 traz recursos importantes para a linguagem, como property hooks, visibilidade assimétrica, nova API DOM, melhorias em arrays, recursos de BcMath, melhorias em PDO, correções e ganhos internos.

Para projetos novos, esses recursos podem ajudar a escrever código mais moderno e expressivo. Para sistemas existentes, o mais importante é atualizar com planejamento, testando compatibilidade, dependências, extensões e logs antes de aplicar em produção.

A atualização para PHP 8.4 pode ser uma ótima evolução para sites, sistemas e APIs PHP, desde que seja feita com cuidado, backup, testes e monitoramento.

Perguntas frequentes sobre PHP 8.4

O que mudou no PHP 8.4?

O PHP 8.4 trouxe property hooks, visibilidade assimétrica, nova API DOM, objeto BcMath\Number, novas funções de array, melhorias em PDO, correções, melhorias de performance e ajustes gerais.

Vale a pena atualizar para PHP 8.4?

Sim, principalmente em projetos que podem ser testados antes da atualização. Porém, sistemas antigos devem passar por homologação para evitar problemas de compatibilidade.

PHP 8.4 pode quebrar meu sistema?

Pode, especialmente se o sistema usa bibliotecas antigas, funções depreciadas, extensões ausentes ou código incompatível. Por isso, teste antes em ambiente separado.

O que são property hooks no PHP 8.4?

São recursos que permitem adicionar lógica diretamente na leitura ou escrita de propriedades de uma classe.

O que é visibilidade assimétrica no PHP 8.4?

É a possibilidade de controlar separadamente quem pode ler e quem pode alterar uma propriedade, como permitir leitura pública e escrita privada.

Como atualizar com segurança para PHP 8.4?

Faça backup, crie ambiente de teste, verifique Composer, extensões, logs, APIs, uploads, login, rotinas automáticas e só depois atualize em produção.