'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.

', 'first_class_callable_syntax_title' => 'First-Class Callable Syntax', 'first_class_callable_syntax_content' => '

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.

', 'never_return_type_title' => 'Der Rückgabetyp Never', 'never_return_type_content' => '

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.

', 'final_class_constants_title' => 'Final Klassen Konstanten', 'final_class_constants_content' => '

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_title' => 'Fibers', 'fibers_content' => '

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.

', 'array_unpacking_title' => 'Entpacken von Arrays mit string-basierten Keys', 'array_unpacking_content' => '

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
25 aufeinanderfolgende Läufe, 250 Requests (sek)
(kleiner ist besser)
', 'performance_results_title' => 'Das Ergebnis (Relativ zu PHP 8.0):', 'performance_results_symfony' => '23.0% schnellere Symfony Demo', 'performance_results_wordpress' => '3.5% schnelleres WordPress', 'performance_related_functions_title' => 'Performance relevante Features in PHP 8.1:', 'performance_jit_arm64' => 'JIT Backend für ARM64 (AArch64)', 'performance_inheritance_cache' => 'Vererbungscache (verhindern das Relinken von Klassen in bei jedem Request)', 'performance_fast_class_name_resolution' => 'Schnelleres auflösen von Klassennamen (verhindern von Kleinschreibungsumwandlung und Hash Lookups )', 'performance_timelib_date_improvements' => 'timelib und ext/date Performance-Optimierungen', 'performance_spl' => 'SPL Dateisystem Iteratoren-Optimierungen', 'performance_serialize_unserialize' => 'Serialisierung- / Deserialisierung-Optimierungen', 'performance_internal_functions' => 'Einige Optimierungen an internen Funktionen (get_declared_classes(), explode(), strtr(), strnatcmp(), dechex())', 'performance_jit' => 'JIT Verbesserungen und Korrekturen', 'other_new_title' => 'Neue Klassen, Interfaces und Funktionen', 'other_new_returntypewillchange' => 'Neues Attribut #[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.

', ];