Recursos descontinuados

PHP Core

Operadores ternários aninhados sem parênteses explícitos

Operações ternárias aninhadas devem usar explicitamente parênteses para ditar a ordem das operações. Anteriormente, quando usada sem parênteses, a associatividade esquerda não resultava no comportamento esperado na maioria dos casos.

<?php
1 ? 2 : 3 ? 4 : 5;   // descontinuado
(1 ? 2 : 3) ? 4 : 5; // ok
1 ? 2 : (3 ? 4 : 5); // ok
?>

Parenteses não são necessários quando organizando um operando interno, pois não gera ambiguidade ou problemas de associatividade:

1 ? 2 ? 3 : 4 : 5 // ok

Acesso a valores de array e string usando chaves

O acesso a valor de string e array usando a sintaxe de chaves está descontinuado. Use $var[$idx] ao invés de $var{$idx}.

A conversão (real) e a função is_real()

A conversão (real) está descontinuada, use (float) em seu lugar.

A função is_real() também está descontinuada, use is_float() em seu lugar.

Desvinculando $this quando $this é usado

Desvincular $this de uma closure não estática que usa $this está descontinuado.

A palavra chave parent sem uma classe parent

Usar a palavra chave parent dentro de uma classe sem parent está descontinuado, e lançará um erro em tempo de compilação no futuro. Atualmente um erro será gerado apenas se/quando o parent for acessado em tempo de execução.

A diretiva INI allow_url_include

A diretiva allow_url_include está descontinuada. Ativá-la gerará um aviso de descontinuação na inicialização.

Caracteres inválidos nas funções de conversão de base

Passar caracteres inválidos para as funções: base_convert(), bindec(), octdec() and hexdec()agora gerará um aviso de descontinuação. O resultado ainda será calculado como se os caracteres inválidos não existissem. Os espaços em branco à esquerda e à direita, bem como os prefixos do tipo 0x (dependendo da base) continuam sendo permitidos.

Usando array_key_exists() em objetos

O uso de array_key_exists() em objetos está descontinuado. Em vez disso isset() ou property_exists() deve ser usado.

Funções magic quotes

As funções get_magic_quotes_gpc() e get_magic_quotes_runtime() estão descontinuadas. Elas sempre retornam false.

Função hebrevc()

A função hebrevc() está descontinuada. Ela pode ser substituída por nl2br(hebrev($str)) ou, preferencialmente, pelo uso do suporte Unicode RTL.

Função convert_cyr_string()

A função convert_cyr_string() está descontinuada. Pode ser substituída por um dos mb_convert_string(), iconv() ou UConverter.

Função money_format()

A função money_format() está descontinuada. Ela pode ser substituída pela funcionalidade intl NumberFormatter.

Função ezmlm_hash()

A função ezmlm_hash() está descontinuada.

Função restore_include_path()

A função restore_include_path() está descontinuada. Pode ser substituída por ini_restore('include_path').

Implode com a ordem histórica dos parâmetros

A passagem de parâmetros para a função implode() na ordem reversa está descontinuada, use implode($glue, $parts) em vez de implode($parts, $glue).

COM

A importação de bibliotecas de tipos com registro constante que não diferencia maiúsculas de minúsculas foi descontinuada.

Filter

FILTER_SANITIZE_MAGIC_QUOTES está descontinuada, use FILTER_SANITIZE_ADD_SLASHES em seu lugar.

Multibyte String

A passagem de um padrão não-string para a função mb_ereg_replace() está descontinuado. Atualmente, os padrões não-string são interpretados como pontos de código ASCII. No PHP 8, o padrão será interpretado como uma string.

Passar a codificação como terceiro parâmetro para a função mb_strrpos() está descontinuado. Em vez disso, passe um offset 0 e a codificação como quarto parâmetro.

Lightweight Directory Access Protocol

ldap_control_paged_result_response() e ldap_control_paged_result() estão descontinuadas. Os controles de paginação podem ser enviados com a função ldap_search().

Reflection

As chamadas para ReflectionType::__toString() agora geram, um aviso de descontinuação. Este método foi descontinuado em favor de ReflectionNamedType::getName() na documentação a partir do PHP 7.1, mas não emitiu um aviso de descontinuação por motivos técnicos.

Os métodos export() em todas as classes Reflection foram descontinuados. Construa um objeto Reflection e converta-o em string em seu lugar:

<?php
// ReflectionClass::export(Foo::class, false) is:
echo new ReflectionClass(Foo::class), "\n";

// $str = ReflectionClass::export(Foo::class, true) is:
$str = (string) new ReflectionClass(Foo::class);
?>

Socket

AI_IDN_ALLOW_UNASSIGNED e AI_IDN_USE_STD3_ASCII_RULES para socket_addrinfo_lookup() foram descontinuadas, devido a uma descontinuação na própria glibc.