## 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
1 ? 2 : 3 ? 4 : 5; // obsoleto
(1 ? 2 : 3) ? 4 : 5; // ok
1 ? 2 : (3 ? 4 : 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.