PHP 8.6 chega em 19 de novembro: o que muda e o que pode quebrar
O PHP 8.6 está programado para chegar em 19 de novembro de 2026, depois de uma sequência de candidatas a lançamento. Não é uma versão de correção de segurança, como as de 21 de outubro, e sim a nova série, com recursos novos, avisos de descontinuação e uma mudança de padrões que merece atenção.
Novidades da linguagem
- Aplicação parcial de funções: cria uma função a partir de outra com parte dos argumentos já preenchidos. Combina bem com o operador pipe.
- Valores padrão em propriedades
readonly: agora é possível, o que se encaixa em interfaces com property hooks. clamp(): limita um valor entre um mínimo e um máximo, e funciona com inteiros, textos e objetos de data.- Classe
Time\Duration: representa intervalos de tempo, com aritmética e comparação direta. - API de polling: acompanha eventos de entrada e saída (epoll, WSAPoll) pelo código do usuário. Não traz recursos assíncronos novos nem um laço de eventos embutido.
- Reflexão:
ReflectionProperty::isReadable()eisWriteable(), eReflectionParameter::getDocComment(), útil para ferramentas de análise estática. - Enum
SortDirectione enums com__debugInfo()para personalizar ovar_dump().
A mudança que pode quebrar: padrões de sessão
Três configurações de sessão mudam de padrão, o que é bom para a segurança, mas pode afetar aplicações existentes:
session.use_strict_modepassa a 1: identificadores de sessão enviados de fora, sem arquivo correspondente, são recusados.session.cookie_httponlypassa a 1: o JavaScript deixa de ler o cookie de sessão pordocument.cookie.session.cookie_samesitepassa a Lax: POSTs entre sites deixam de enviar o cookie de sessão. Fluxos como login único (SAML) e formulários que enviam dados para outro domínio podem parar de funcionar.
Quem depende do comportamento antigo deve testar antes de atualizar, ou definir os valores explicitamente.
O que sai de cena (descontinuações)
spl_object_hash()(usespl_object_id()),is_double(),is_integer(),is_long()edoubleval().- Retornar de dentro de um bloco
finally, e usarlet,isounamespacecomo identificadores. - O parâmetro
$case_insensitivedodefine(), e a funçãometaphone(). - Vários métodos do
ArrayIterator(ordenação e serialização) e os métodos de CSV doSplFileObject. - No MySQLi,
mysqli::stmt_init()emysqli_get_charset().
Devo atualizar?
Não é urgente: a série 8.4 e a 8.5 seguem recebendo correções, e o PHP 8.2 chega ao fim do suporte em 31 de dezembro de 2026. Frameworks levam algum tempo para declarar compatibilidade, e o Drupal, por exemplo, ainda testa o 8.6 sem listá-lo como suportado. O caminho sensato é testar em ambiente separado, ler as notas de atualização e esperar a compatibilidade das suas dependências antes de levar a produção. E, até lá, mantenha a série atual com os patches de segurança em dia (veja a matéria sobre o PHP2Shell).
Matéria baseada em análises da comunidade; a data de lançamento e a lista final de mudanças podem variar. Confirme em php.net.
Sua semana em números 📬
Selic, CDI, inflação e as novidades das ferramentas — um e-mail por semana, sem spam.
Sem custo, descadastro em 1 clique em qualquer e-mail.