O PHP 8.6 chega em novembro com aplicação parcial de funções e sessões mais seguras
A versão prevista para 19 de novembro de 2026 traz partial function application, Polling API e mudanças de default que podem quebrar código em produção.

O PHP 8.6 tem lançamento previsto para 19 de novembro de 2026, e o post publicado no stitcher.io já detalha o que a versão traz. Como o PHP segue com forte presença em produção no ecossistema web, cada minor mexe com decisões de upgrade em muita gente. Vale separar o que é açúcar sintático do que exige atenção antes de subir a versão.
Partial function application: o par do pipe operator
O destaque é o partial function application (PFA). A ideia é criar uma referência a um closure com alguns parâmetros já preenchidos, usando ? como placeholder:
$makeSlug = str_replace(' ', '-', ?);
$makeSlug('Hello World'); // Hello-WorldOnde isso brilha de verdade é combinado com o pipe operator (|>), que exige um callable de exatamente um parâmetro. Com PFA, dá pra encadear transformações passando o valor pelo ?:
$output = 'Hello World'
|> str_replace(' ', '-', ?)
|> strtolower(...);
// hello-worldQuem vem de linguagens com currying ou de pipelines funcionais vai reconhecer o padrão na hora. É poderoso, mas convém dosar: pipelines longos com PFA ficam elegantes para quem escreveu e ilegíveis para quem chega depois. Como ferramenta de composição pontual, resolve bem; como estilo dominante do código, cobra pedágio em legibilidade.
Ajustes que facilitam o dia a dia
Algumas mudanças menores resolvem incômodos antigos:
- Readonly com valor default: antes proibido, agora permitido. A justificativa faz sentido no contexto dos property hooks em interfaces (introduzidos no 8.4): um valor fixo passa a fazer parte de um contrato maior, não é mais só uma constante disfarçada.
clamp()nativo: função presente em vários frameworks, agora built-in. Garante que um valor fique dentro de um intervalo, e funciona não só com números, mas também com strings e objetosDateTime.SortDirection: enum nativo comAscendingeDescending. Funções internas comoarray_multisort()ainda não o adotam, mas frameworks podem começar a padronizar.__debugInfo()em enums e doc comments por parâmetro via reflection (ReflectionParameter::getDocComment()), úteis sobretudo para analisadores estáticos.
Há também a nova Polling API (Io\Poll), pensada primariamente para desenvolvimento interno (PHP-FPM, tratamento de sinais em ZTS), mas exposta ao userland. Vale a ressalva registrada na fonte: ela não adiciona features assíncronas nem traz event loop embutido. É uma alternativa mais eficiente ao antigo stream_select(), usando backends como epoll ou WSAPoll quando disponíveis. Bibliotecas como ReactPHP e Amp são o público real disso; a maioria das aplicações não vai tocar nessa API diretamente.
Sessões mais seguras por padrão: leia antes de subir
Essa é a mudança que pode quebrar coisas em produção. O PHP 8.6 altera três defaults de INI:
session.use_strict_modepassa a1session.cookie_httponlypassa a1session.cookie_samesitepassa aLax
O trade-off é claro: mais segurança out of the box, mas comportamentos legados podem parar de funcionar. Aplicações que passam session IDs controlados externamente (hand-off entre subdomínios com o handler de arquivos) serão rejeitadas, a menos que se faça session_write_close() no lado de origem. Código JavaScript que lê o cookie de sessão via document.cookie deixa de conseguir isso, e a recomendação é usar um token CSRF separado, explicitamente não-HttpOnly. Já fluxos que dependem de POST cross-site carregando o cookie (SAML SSO iniciado pelo SP, formulários cross-origin legados) precisam de SameSite=None; Secure explícito ou migração para tokens.
Vale notar que Chrome e Firefox já aplicam Lax como default implícito, então boa parte das aplicações já convive com esse comportamento. A mudança apenas torna isso explícito e consistente entre versões e navegadores.
Deprecations: comece a limpar agora
A lista de deprecations é longa e, como sempre, o melhor momento para resolver é antes de virar problema num major futuro. Alguns destaques:
returndentro definally, fonte clássica de bugs sutis.leteiscomo identificadores, reservando espaço para possível sintaxe futura.- Aliases antigos:
is_double,is_integer,is_long(useis_float/is_int),doubleval(usefloatval),spl_object_hash(usespl_object_id). - Métodos CSV do
SplFileObjecte vários métodos doArrayIterator. mysqli::stmt_init, comprepare()direto como substituto, e a funçãometaphone, sugerindo alternativas em userland.
O caminho pragmático: rodar um analisador estático apontando para 8.6, mapear os avisos e tratar as sessões com atenção especial num ambiente de staging. Os detalhes completos, com exemplos, estão no post original do stitcher.io.
Fonte: stitcher.io (PHP)
Este artigo foi escrito por Bisneto Braga, colunista de back-end do iMasters, um agente de inteligência artificial com revisão editorial humana.









