PHP 8.0.0 Released!

Características obsoletas

Núcleo PHP

Operadores ternarios anidados sin paréntesis explícitos

Las operaciones ternarias anidadas deben utilizar explícitamente paréntesis para dictar el orden de las operaciones. Anteriormente, cuando se usaba sin paréntesis, la asociatividad izquierda no resultaría en el comportamiento esperado en la mayoría de los casos.

<?php
5;   // obsoleto
(3) ? 5// ok
: (5); // ok
?>

Acceso al desplazamiento de Array y string usando llaves

La sintaxis de acceso de desplazamiento en array y string con llaves es obsoleto. Use $var[$idx] en vez de $var{$idx}.

La llamada (real) y la función is_real()

La llamada (real) es obsoleta, use (float) en su lugar.

La función is_real() es también obsoleta, use is_float() en su lugar.

Desencadenando $this cuando $this es usado

Desencadenando $this de un cierre no estático que use $this es obsoleto.

palabra clave parent sin clase de padre

Usar parent dentro de una clase sin un padre es obsoleto, y lanzará un error de compilación en el futuro. Actualmente sólo se generará un error si/cuando el padre es accedido en tiempo de ejecución.

Opción INI allow_url_include

La directiva ini allow_url_include es obsoleta. Habilitar esta generará un aviso de depreciación en el arranque.

Caracteres inválidos en las funciones de conversión de base

Pasar caracteres inválidos a base_convert(), bindec(), octdec() y hexdec() generará ahora un aviso de depreciación. El resultado se seguirá calculando como si los caracteres inválidos no existieran. Liderando y siguiendo el espacio blanco, así como prefijos de tipo 0x (dependiendo de la base) siguen estando permitidos.

Usar array_key_exists() en objetos

Usar array_key_exists() en objetos es obsoleto. En lugar de eso, debe usar isset() o property_exists().

Funciones de comillas mágicas

Las funciones get_magic_quotes_gpc() y get_magic_quotes_runtime() son obsoletas. Estas siempre devolverán FALSE.

función hebrevc()

La función hebrevc() es obsoleta. Esta puede ser reemplazada con nl2br(hebrev($str)) o, preferiblemente, el uso del soporte RTL de Unicode.

función convert_cyr_string()

La función convert_cyr_string() es obsoleta. Esta puede ser reemplazada con mb_convert_string(), iconv() o UConverter.

función money_format()

La función money_format() es obsoleta. Esta puede ser reemplazada con la funcionalidad intl NumberFormatter.

función ezmlm_hash()

La función ezmlm_hash() es obsoleta.

función restore_include_path()

La función restore_include_path() es obsoleta. Esta puede ser reemplazada con ini_restore('include_path').

Implode con el orden de los parámetros históricos

Pasar parámetros a implode() en orden inverso es obsoleto, use implode($glue, $parts) en vez de implode($parts, $glue).

COM

La importación de bibliotecas de tipos con registro constante que no distingue entre mayúsculas y y minúsculas es obsoleto.

Filter

FILTER_SANITIZE_MAGIC_QUOTES es obsoleto, use FILTER_SANITIZE_ADD_SLASHES en su lugar.

Multibyte String

Pasar un patrón sin string a mb_ereg_replace() es obsoleto. Actualmente, los patrones sin string se interpretan como puntos de código ASCII. En PHP 8, el patrón será interpretado como un string en su lugar.

Pasar la codificación como tercer parámetro a mb_strrpos() es obsoleto. En su lugar, pasar un offset de 0, y codificar como cuarto parámetro.

Protocolo ligero de acceso a directorios

ldap_control_paged_result_response() y ldap_control_paged_result() son obsoletas. Los controles de paginación pueden ser enviados junto con ldap_search() en su lugar.

Reflection

Llamar a ReflectionType::__toString() ahora generará un aviso de depreciación. Este método ha sido desaprobado en favor de ReflectionNamedType::getName() en la documentación desde PHP 7.1, pero no lanzó un aviso de depreciación por razones técnicas.

Los métodos export() en todas las clases Reflection están obsoletos. Contruir un objeto Reflection y convertir este a string en su 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

Las flags AI_IDN_ALLOW_UNASSIGNED y AI_IDN_USE_STD3_ASCII_RULES para socket_addrinfo_lookup() sob obsoletas, debido a una depreciación ascendente en el glibc.

add a note add a note

User Contributed Notes 2 notes

up
10
Ahmad Asjad
5 months ago
(\?[^php]).*(\:).*(\?).*(\:[^=])
Above regex can help others to find the nested ternary operator
up
0
Techlemur
15 days ago
^((?!\().*)(\?[^php]).*(\:)([\s\v]+)(?!\().*[^\/](\?)([\s\v\h]*).*(\:[^=])
Regex to find deprecated nested ternaries
To Top