Funcionalidades descontinuadas

PHP Core

Implementar Serializable sem __serialize() e __unserialize()

Apenas os novos métodos devem ser implementados, se nenhum suporte para PHP anterior à versão 7.4 for fornecido, ou ambos devem ser implementados.

Passar null para parâmetros não não-anuláveis de funções embutidas

Tipos escalares para funções embutidas são anuláveis por padrão. Esse comportamento está descontinuado para alinhar com o comportamento de funções definidas pelo usuário, onde tipos escalares precisam ser explicitamente marcados como anuláveis.

<?php
var_dump(str_contains("foobar", null));
// Deprecated: Passing null to parameter #2 ($needle) of type string
//             is deprecated
?>

Conversões float para int incompatíveis implícitas

A conversão implícita de float para int que leva a uma perda de precisão agora está descontinuada. Isso afeta chaves de array, Declarações do tipo int no modo coercitivo, e operadores trabalhando em ints.

<?php
$a = [];
$a[15.5]; // descontinuado, pois o valor da chave perde o componente de 0.5
$a[15.0]; // ok, pois 15.0 == 15
?>

Chamar o elemento static em um trait

Chamar um método static, ou acessar uma propriedade static diretamente em um trait está descontinuado. Métodos e propriedades estáticos devem ser acessados apenas em uma classe usando o trait.

Retornar um não-array da __sleep()

Retornar um valor que não é um array da __sleep() agora gera um diagnóstico.

Retornar por referência de uma função void

<?php
function &test(): void {}
?>
Essa função é contraditória, e já emite o seguinte E_NOTICE quando chamada: Only variable references should be returned by reference.

Autovivificação a partir de false

Autovivificação é o processo de criar um novo array ao acrescentar um valor. Autovivificação é proibida a partir de valores escalares, false, no entanto era uma exceção. Isso está descontinuado agora.

<?php
$arr = false;
$arr[] = 2;   // descontinuado
?>

Note:

Autovivificação a partir de null e valores não indefinidos ainda é permitida:

<?php
// A partir de indefinido
$arr[] = 'some value';
$arr['doesNotExist'][] = 2;
// A partir de null
$arr = null;
$arr[] = 2;
?>

ctype

Verificar argumentos não-string

Passar um argumento não-string está descontinuado. No futuro, o argumento será interpretado como uma string em vez de um codepoint ASCII. Dependendo do comportamento pretendido, o argumento deve ser convertido para string ou uma chamada explícita para chr() deve ser feita. Todas as funções ctype_*() são afetadas.

Data

date_sunrise() e date_sunset() foram descontinuadas em favor de date_sun_info().

strptime() foi descontinuada. Use date_parse_from_format() em vez dela (para análise independente de localidade), ou IntlDateFormatter::parse() (para análise dependente de localidade).

strftime() e gmstrftime() foram descontinuadas. Em vez delas, use date() (para formatação independente de localidade), ou IntlDateFormatter::format() (para formatação dependente de localidade).

Filtros

Os filtros FILTER_SANITIZE_STRING e FILTER_SANITIZE_STRIPPED estão descontinuados.

A diretiva INI filter.default está descontinuada.

GD

O num_points da imagepolygon(), imageopenpolygon() e imagefilledpolygon() foi descontinuado.

Hash

A mhash(), mhash_keygen_s2k(), mhash_count(), mhash_get_block_size(), e mhash_get_hash_name() foram descontinuadas. Use as funções hash_*() em vez delas.

IMAP

A constante NIL foi descontinuada. Use 0 em vez dela.

Intl

Chamar IntlCalendar::roll() com um argumento bool está descontinuado. Use 1 e -1 em vez de true e false respectivamente.

Multibyte String

Chamar mb_check_encoding() sem argumentos está descontinuado.

MySQLi

A propriedade mysqli_driver::$driver_version foi descontinuada. Ela era sem sentido e desatualizada, use PHP_VERSION_ID em vez dela.

Chamar mysqli::get_client_info() ou mysqli_get_client_info() com o argumento mysqli foi descontinuado. Chame mysqli_get_client_info() sem argumentos para obter a informação de versão da biblioteca cliente.

O método mysqli::init() foi descontinuado. Substitua chamadas para parent::init() por parent::__construct().

OCI8

A diretiva INI oci8.old_oci_close_semantics está descontinuada.

ODBC

odbc_result_all() foi descontinuada.

PDO

O modo de busca PDO::FETCH_SERIALIZE foi descontinuado.

PgSQL

Não passar o argumento de conexão para todas as funções pgsql_*() foi descontinuado.

SOAP

A opção ssl_method do SoapClient::__construct() foi descontinuada em favor das opções de contexto de stream SSL.

Biblioteca Padrão

Chamar key(), current(), next(), prev(), reset(), ou end() em objects está descontinuado. Primeiro converta o object para um array utilizando get_mangled_object_vars(), ou utilize os métodos fornecidos por uma classe que implemente Iterator, como por exemplo ArrayIterator.

A diretiva INI auto_detect_line_endings está descontinuada. Se necessário, em vez dela, lide com quebras de linha "\r" manualmente.

As constantes FILE_BINARY e FILE_TEXT foram descontinuadas. Elas nunca tiveram nenhum efeito.