Veraltete Features

PHP-Kern

Verschachtelte ternÀre Operatoren ohne explizite Klammern

Verschachtelte ternĂ€re Operationen mĂŒssen nun explizit Klammern verwenden, um die Reihenfolge der Operationen festzulegen. Wenn in der Vergangenheit keine Klammern verwendet wurden, fĂŒhrte die Links-AssoziativitĂ€t in den meisten FĂ€llen nicht zum erwarteten Verhalten.

<?php
1
? 2 : 3 ? 4 : 5; // veraltet
(1 ? 2 : 3) ? 4 : 5; // OK
1 ? 2 : (3 ? 4 : 5); // OK
?>

Klammern sind nicht erforderlich, wenn der mittlere Operand umschlossen wird, da dies immer eindeutig ist und nicht durch die AssoziativitÀt beeinflusst wird:

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

Zugriff auf Array- und Zeichenketten-Offset mit geschweiften Klammern

Die Syntax fĂŒr den Zugriff auf Array- und String-Offsets mit geschweiften Klammern ist veraltet. Statt $var{$idx} sollte $var[$idx] verwendet werden.

Die Typumwandlung (real) und die Funktion is_real()

Die Typumwandlung (real) ist veraltet, stattdessen (float) verwendet werden.

Die Funktion is_real() ist ebenfalls veraltet, stattdessen sollte is_float() verwendet werden.

Aufhebung der Bindung von $this, wenn $this verwendet wird

Die Bindung von $this an eine nicht-statische Closure aufzuheben, die $this verwendet, ist veraltet.

SchlĂŒsselwort parent ohne ĂŒbergeordnete Klasse

Die Verwendung von parent innerhalb einer Klasse ohne Elternklasse ist veraltet und wird in Zukunft einen Fehler bei der Kompilierung auslösen. Derzeit wird ein Fehler nur dann erzeugt, wenn zur Laufzeit auf die Elternklasse zugegriffen wird.

INI-Option allow_url_include

Die INI-Direktive allow_url_include ist veraltet. Wenn sie aktiviert ist, wird beim Start ein entsprechender Hinweis erzeugt.

UngĂŒltige Zeichen in Funktionen zur Umwandlung der Basis

Die Übergabe unzulĂ€ssiger Zeichen an die Funktionen base_convert(), bindec(), octdec() und hexdec() fĂŒhrt nun zu einem Hinweis auf eine veraltete Verwendung. Das Ergebnis wird so berechnet, als gĂ€be es das unzulĂ€ssige Zeichen nicht. FĂŒhrende und nachfolgende Leerzeichen sowie PrĂ€fixe wie 0x (je nach Zahlensystem) sind weiterhin zulĂ€ssig.

Die Anwendung von array_key_exists() auf Objekte

Die Anwendung der Funktion array_key_exists() auf Objekte ist veraltet. Stattdessen sollte entweder isset() oder property_exists() verwendet werden.

Funktionen fĂŒr "magische AnfĂŒhrungszeichen" (Magic Quotes)

Die Funktionen get_magic_quotes_gpc() und get_magic_quotes_runtime() sind veraltet. Sie geben immer false zurĂŒck.

Die Funktion hebrevc()

Die Funktion hebrevc() ist veraltet. Sie kann durch nl2br(hebrev($str)) ersetzt werden oder, besser, indem die UnterstĂŒtzung von Unicode-RTL genutzt wird.

Die Funktion convert_cyr_string()

Die Funktion convert_cyr_string() ist veraltet. Sie kann durch mb_convert_string(), iconv() oder UConverter ersetzt werden.

Die Funktion money_format()

Die Funktion money_format() ist veraltet. Sie kann durch die FunktionalitÀt der intl-Klasse NumberFormatter ersetzt werden.

Die Funktion ezmlm_hash()

Die Funktion ezmlm_hash() ist veraltet.

Die Funktion restore_include_path()

Die Funktion restore_include_path() ist veraltet. Sie kann durch ini_restore('include_path') ersetzt werden.

Reihenfolge der Parameter bei implode()

Die Übergabe von Parametern an die Funktion implode() in umgekehrter Reihenfolge ist veraltet, statt implode($parts, $glue) sollte implode($glue, $parts) verwendet werden.

COM

Der Import von Typbibliotheken, bei denen die Groß- und Kleinschreibung von Konstanten nicht beachtet wird, ist veraltet.

Filter

Der Filter FILTER_SANITIZE_MAGIC_QUOTES ist veraltet, stattdessen sollte FILTER_SANITIZE_ADD_SLASHES verwendet werden.

Multibyte-Zeichenketten

Bei der Funktion mb_ereg_replace() ist die Übergabe eines Musters, das keine Zeichenkette ist, veraltet. GegenwĂ€rtig werden solche Muster als ASCII-Codepunkte interpretiert. In PHP 8 wird das Muster stattdessen als Zeichenkette interpretiert.

Bei der Funktion mb_strrpos() ist die Übergabe der Kodierung als 3. Parameter veraltet. Stattdessen sollten ein 0-Offset und die Kodierung als 4. Parameter ĂŒbergeben werden.

Lightweight Directory Access Protocol (LDAP)

Die Funktionen ldap_control_paged_result_response() und ldap_control_paged_result() sind veraltet. Steuerelemente fĂŒr die Seitennavigation können stattdessen zusammen mit ldap_search() gesendet werden.

Reflection

Der Aufruf von ReflectionType::__toString() erzeugt nun einen Hinweis auf eine veraltete Funktion. Diese Methode wird in der Dokumentation seit PHP 7.1 als veraltet zugunsten von ReflectionNamedType::getName() bezeichnet, hat aber aus technischen GrĂŒnden keinen entsprechenden Hinweis erzeugt.

Die export()-Methoden sind in allen Klassen von Reflection veraltet. Stattdessen sollte ein Reflection-Objekt erzeugt werden und dieses in eine Zeichenkette umgewandelt werden:

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

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

Socket

Bei der Funktion socket_addrinfo_lookup() sind die Flags AI_IDN_ALLOW_UNASSIGNED und AI_IDN_USE_STD3_ASCII_RULES veraltet und entsprechen damit der zugrundeliegenden Glibc.

add a note

User Contributed Notes 1 note

up
17
Ahmad Asjad ¶
6 years ago
(\?[^php]).*(\:).*(\?).*(\:[^=])
Above regex can help others to find the nested ternary operator