CakeFest 2024: The Official CakePHP Conference

Recursos defasados na versão PHP 7.2.x

Strings sem aspas

Strings sem aspas que não são constantes globais são consideradas strings delas mesmas. Este comportamento costumava emitir um E_NOTICE, mas agora irá emitir um E_WARNING. Na próxima versão maior do PHP, uma exceção Error será lançada no lugar.

<?php

var_dump
(NONEXISTENT);

/* Output:
Warning: Use of undefined constant NONEXISTENT - assumed 'NONEXISTENT' (this will throw an Error in a future version of PHP) in %s on line %d
string(11) "NONEXISTENT"
*/

png2wbmp() e jpeg2wbmp()

As funções png2wbmp() e jpeg2wbmp() da extensão GD foram descontinuadas e serão removidas na próxima versão maior do PHP.

INTL_IDNA_VARIANT_2003 variante

A extensão Intl descontinuou a variante INTL_IDNA_VARIANT_2003, que está sendo usada atualmente como padrão para idn_to_ascii() e idn_to_utf8(). PHP 7.4 irá mudar esses padrões para INTL_IDNA_VARIANT_UTS46, e a próxima versão maior do PHP irá remover INTL_IDNA_VARIANT_2003 completamente.

__autoload() metódo

O método __autoload() foi descontinuado porque é inferior ao spl_autoload_register() (devido a não ser permitido encadear autoloaders), e não há interoperabilidade entre os dois estilos de autoloading.

Configuração ini track_errors e variável $php_errormsg

Quando a configuração ini track_errors está ativada, uma variável $php_errormsg é criada no escopo local quando um erro não fatal ocorre. Dado que a maneira preferida de recuperar tais informações de erro é usando error_get_last(), este recurso foi descontinuado.

create_function() function

Dado os problemas de segurança desta função (sendo um wrapper ao redor de eval()), esta função datada foi descontinuada. A alternativa preferida é o uso de funções anônimas.

Configuração ini mbstring.func_overload

Dado os problemas de interoperabilidade das funções baseadas em string sendo usadas em ambientes com esta configuração ativada, ela será despreciada.

Conversão (unset)

Convertendo qualquer expressão para este tipo sempre resultará em null, e então esta conversão de tipo supérflua foi descontinuada.

parse_str() sem um segundo argumento

Sem o segundo argumento para parse_str(), os parâmetros de string de consulta preenchiam a tabela de símbolos local. Dado as implicações de segurança disto, usar parse_str() sem um segundo parâmetro foi descontinuado. A função deve sempre ser usada com dois argumentos, como o segundo argumento faz com que a string de consulta seja analisada em um array.

Função gmp_random()

Esta função gera um número aleatório baseado em um intervalo calculado por um tamanho de membro específico da plataforma não exposto. Por isso, esta função foi descontinuada. A maneira preferida de gerar um número aleatório usando a extensão GMP é com gmp_random_bits() e gmp_random_range().

Função each()

Esta função é muito mais lenta na iteração do que um foreach normal, e causa problemas de implementações para algumas mudanças da linguagem. Portanto, ela foi descontinuada.

assert() com um argumento string

Usar assert() com um argumento string requer que a string seja passada para eval(). Dado o potencial para a execução de código remoto, usar assert() com um argumento string foi descontinuado em favor de usar expressões booleanas.

$errcontext argumento para manipuladores de erros

O argumento $errcontext contém todas as variáveis locais de erro do site. Dado a raridade do uso, e os problemas causados com as otimizações internas, ele foi descontinuado. Ao invés disto, um debugger deve ser usado para recuperar informações nas variáveis locais de erro do site.

Função read_exif_data()

O atalho read_exif_data() foi descontinuado. A função exif_read_data() deve ser usada no lugar.

add a note

User Contributed Notes 2 notes

up
4
Anonymous
5 years ago
An empty <?php?> Codeblock in PHP 7.2.0 will put out an "Unquoted strings" warning. To prevent that, add at least one empty space into the codeblock.

Example:
<?php

<?php/*
echo "This was some useful code.\n";
*/
?>

?>
Gives: PHP Warning: Use of undefined constant php - assumed 'php' (this will throw an Error in a future version of PHP)

Fix via:
<?php

<?php /*
echo "This was some useful code.\";
*/
?>

?>

Don't know if that is an intentional behaviour or a side effect.
up
2
webmaster at thedigitalorchard dot ca
6 years ago
Instead of __autoload(), you can use spl_autoload_register() very easily, as per the documentation:

spl_autoload_register(function ($class) {
include 'classes/' . $class . '.class.php';
});

And this lets you have multiple autoloaders instead of one global one.
To Top