PHP 8.5 explicado: pipe, clone, arrays e URI

PHP 8.5 saiu em 20 de novembro de 2025. Recursos, exemplos e testes de compatibilidade antes da atualização.

PHP 8.5 explicado: pipe, clone, arrays e URI

PHP 8.5 saiu em 20 de novembro de 2025. Recursos, exemplos e testes de compatibilidade antes da atualização.

Versão e compatibilidade

PHP 8.5 foi publicado em 20 de novembro de 2025. De 8.4 para 8.5 muda a versão menor, não o primeiro número. Antes de atualizar produção, confira framework, extensões e hospedagem, leia o guia de migração e teste código e plugins em staging com backup e plano de reversão.

Operador pipe

|> passa um valor por funções chamáveis da esquerda para a direita. trim(...) e strtolower(...) são callables de primeira classe; a função anônima recebe o resultado anterior. À direita é preciso um callable, não uma expressão qualquer. Isso facilita ler transformações em etapas.

<?php
$title = ' PHP 8.5 Released ';
$slug = $title |> trim(...) |> (fn($s) => str_replace(' ', '-', $s)) |> strtolower(...);
var_dump($slug); // string(16) "php-8.5-released"

Clonar alterando propriedades

clone($objeto, ['propriedade' => valor]) cria cópia e define propriedades durante a clonagem, inclusive em classes readonly. No exemplo alpha muda só na cópia. Uma atribuição posterior a clone comum não reescreveria propriedade readonly já inicializada.

<?php
readonly class Color {
    public function __construct(public int $red, public int $alpha = 255) {}
    public function withAlpha(int $alpha): self {
        return clone($this, ['alpha' => $alpha]);
    }
}
$original = new Color(79);
$copy = $original->withAlpha(128);

Primeiro e último valor

array_first() e array_last() retornam valores na ordem do array, não das menores ou maiores chaves. Array vazio retorna null; se null também for valor possível, teste separadamente se está vazio. Não movem o ponteiro interno como reset() e end().

<?php
$items = ['first', 'middle', 'last'];
var_dump(array_first($items)); // "first"
var_dump(array_last($items));  // "last"
var_dump(array_first([]));     // null

Extensão URI

Uri\Rfc3986\Uri segue RFC 3986; PHP 8.5 também inclui APIs WHATWG URL. Escolha conforme o caso. A extensão não elimina automaticamente bibliotecas externas, validação de URL, conferência de host ou proteção de requisições remotas.

<?php
use Uri\Rfc3986\Uri;
$uri = new Uri('https://example.com/path?q=1');
var_dump($uri->getHost()); // "example.com"

Deprecações e atualização

Os casts (boolean), (integer), (double), (binary) foram depreciados; use (bool), (int), (float), (string). Backticks como alias de shell_exec() também. shell_exec() deixa a intenção clara, mas não torna entradas não confiáveis seguras. Evite shell quando possível e não concatene dados externos. Confira avisos e migração.

Fontes oficiais

Lançamento: https://www.php.net/releases/8.5/en.php ; funções: https://www.php.net/manual/en/migration85.new-functions.php ; deprecações: https://www.php.net/manual/en/migration85.deprecated.php ; migração: https://www.php.net/manual/en/migration85.php .

Partilhar

Qual é a sua reação?

Gosto Gosto 0
Não gosto Não gosto 0
Adoro Adoro 0
Divertido Divertido 0
Irritado Irritado 0
Triste Triste 0
Uau Uau 0