'PHP 8.1 ist ein Minor-Update der Sprache PHP und beinhaltet viele neue Features und Verbesserungen. Unter anderem Enumerations, Readonly-Properties, First-Class Callable Syntax, Fibers, Intersection-Types, Performance-Optimierungen.',
'main_title' => 'Released!',
'main_subtitle' => 'PHP 8.1 ist ein Minor-Update der Sprache PHP.
Es beinhaltet viele neue Features und Verbesserungen.
Unter anderem Enumerations, Readonly-Properties, First-Class Callable Syntax, Fibers, Intersection-Types, Performance-Optimierungen.',
'upgrade_now' => 'Wechsle jetzt zu PHP 8.1!',
'documentation' => 'Doc',
'enumerations_title' => 'Enumerations',
'enumerations_content' => '
Du kannst nun Enums statt Konstanten für mehr Typensicherheit und direkter Validierung nutzen.
', 'readonly_properties_title' => 'Readonly-Properties', 'readonly_properties_content' => 'Readonly-Properties können nach einer Initialisierung nicht mehr verändert werden.
Sie sind ein ideales Werkzeug um Value-Objekte und Data-Transfer-Objekte zu erstellen.
Durch die sogenannte First-Class Callable Syntax kannst du eine Referenz zu jeder beliebigen Funktion erhalten.
', 'new_in_initializers_title' => 'New in Initialisierungen', 'new_in_initializers_content' => 'Objekte können nun als Default-Wert für Parameter, statische Variablen, Konstanten, so wie als Argument für Attribute genutzt werden.
Dies ermöglicht nun auch die Nutzung von verschachtelten Attributen.
', 'pure_intersection_types_title' => 'Pure-Intersection-Types', 'pure_intersection_types_content' => 'Nutze die Intersection-Types, wenn du sicherstellen möchtest, dass das übergebene Objekt mehrere Typen implementieren.
Es ist aktuell nicht möglich eine Kombination aus Intersection- und Union-Types zu nutzen, wie z.B. A&B|C
.
Eine Funktion mit dem Rückgabetyp never
gibt an, dass sie keinen Rückgabewert besitzt und die Funktion entweder eine Exception wirft oder das Script durch die()
, exit()
, trigger_error()
, oder einer ähnlichen Funktion terminiert wird.
Es ist nun möglich Klassen Konstanten als final zu definieren, sodass diese in einer Vererbung nicht überschrieben werden können.
', 'octal_numeral_notation_title' => 'Explizite Oktalsystem-Zahl Notation', 'octal_numeral_notation_content' => 'Du kannst nun Oktalsystem-Zahlen explizit durch einen 0o
-Prefix angeben.
Fibers sind eine grundlegende Funktionalität zur Implementierung von verzahnten Abläufen. Sie sind dazu gedacht Code-Blöcke zu erstellen, die pausiert und wiederaufgenommen werden ähnlich wie die Generator-Implementierung, jedoch von überall aus. Fibers selbst stellen keine Nebenläufigkeit bereit und benötigen somit eine Event-Loop Implementierung. Aber sie ermöglichen die gemeinsame Nutzung einer API in einem blockierenden und nicht blockierenden Kontext.
Fibers können dazu dienen, Funktionen wie z.B. Promise::then()
oder Generator basierte Koroutinen zu ersetzen. Generell wird davon ausgegangen, dass Bibliotheken-Entwickler eine Abstraktion um die Fibers herum bauen werden, sodass man selten in Berührung mit den Fibers kommen wird.
PHP unterstützte bereits das Entpacken von Arrays mit int-basiertem Key in andere Arrays. Jetzt ist es auch möglich Arrays mit einem string-basiertem Key oder auch einer Kombination aus beiden Varianten zu entpacken.
', 'performance_title' => 'Performance-Optimierungen', 'performance_chart' => 'Symfony Demo App Request Zeit#[ReturnTypeWillChange]
.',
'other_new_fsync_fdatasync' => 'Neue Funktionen fsync
und fdatasync
.',
'other_new_array_is_list' => 'Neue Funktion array_is_list
.',
'other_new_sodium_xchacha20' => 'Neue Sodium XChaCha20 Funktionen.',
'bc_title' => 'Veraltete Funktionalität und inkompatible Änderungen zu vorherigen PHP Versionen',
'bc_null_to_not_nullable' => 'Übergabe von null an nicht null-fähige interne Funktionsparameter ist veraltet.',
'bc_return_types' => 'Interne PHP Klassen-Methoden besitzen nun Rückgabetypen',
'bc_serializable_deprecated' => 'Das Serializable
Interface ist nun veraltet.',
'bc_html_entity_encode_decode' => 'HTML-Entitäten en/decode Funktionen verarbeiten und ersetzen einfache Anführungszeichen im Standard.',
'bc_globals_restrictions' => 'Restriktionen an der $GLOBALS
Variable.',
'bc_mysqli_exceptions' => 'MySQLi: Der Standard Error-Modus wirft nun Exceptions.',
'bc_float_to_int_conversion' => 'Implizite nicht kompatible Float zu Int Konvertierung ist veraltet.',
'bc_finfo_objects' => 'finfo Erweiterung: file_info
nutzt nun das finfo-Objekt statt einer resource.',
'bc_imap_objects' => 'IMAP: imap nutzt nun das IMAP\Connection
Objekt statt des resource-Typen.',
'bc_ftp_objects' => 'FTP Erweiterung: Nutzt nun das FTP\Connection
Objekt statt des resource-Typen.',
'bc_gd_objects' => 'GD Erweiterung: Die Klasse GdFont
ersetzt nun den zuvor genutzten resource-Typ.',
'bc_ldap_objects' => 'LDAP: Die resource-Typen wurden auf LDAP\Connection
, LDAP\Result
und LDAP\ResultEntry
umgestellt.',
'bc_postgresql_objects' => 'PostgreSQL: Die resource-Typen wurden auf PgSql\Connection
, PgSql\Result
und PgSql\Lob
umgestellt.',
'bc_pspell_objects' => 'Pspell: Der resource-Typ von pspell und pspell config wurden auf PSpell\Dictionary
und PSpell\Config
umgestellt.',
'footer_title' => 'Bessere Performance, verbesserte Syntax und verbesserte Typensicherheit.',
'footer_content' => 'Für den direkten Code-Download von PHP 8.1 schaue bitte auf der Downloads Seite vorbei. Windows Pakete können auf der PHP für Windows Seite gefunden werden. Die Liste der Änderungen ist im ChangeLog festgehalten.
Der Migration Guide ist im PHP Manual verfügbar. Lies dort nach für detaillierte Informationen zu den neuen Funktionen und inkompatiblen Änderungen zu vorherigen PHP Versionen.
', ];