{"id":74862,"date":"2025-12-05T09:27:29","date_gmt":"2025-12-05T08:27:29","guid":{"rendered":"https:\/\/kinsta.com\/de\/?p=74862&#038;preview=true&#038;preview_id=74862"},"modified":"2025-12-08T14:34:45","modified_gmt":"2025-12-08T13:34:45","slug":"php-8-5","status":"publish","type":"post","link":"https:\/\/kinsta.com\/de\/blog\/php-8-5\/","title":{"rendered":"PHP 8.5: Das ist neu in der neuesten Version"},"content":{"rendered":"<p>Die PHP Group hat die Version 8.5 der Open-Source-Skriptsprache ver\u00f6ffentlicht, mit der ein Gro\u00dfteil des Internets betrieben wird, darunter auch Websites, die das WordPress CMS nutzen.<\/p>\n<p>Mit der Ver\u00f6ffentlichung von PHP 8.5 im November hat sich die PHP-Gemeinschaft zum zweiten Mal dazu verpflichtet, jedes Jahr wichtige Updates zu ver\u00f6ffentlichen, gefolgt von <a href=\"https:\/\/www.php.net\/supported-versions.php\">zwei Jahren aktivem Support<\/a> f\u00fcr jede Version.<\/p>\n<p>Obwohl 8.5 brandneu ist, haben wir es in unserem j\u00e4hrlichen <a href=\"https:\/\/kinsta.com\/de\/blog\/php-benchmarks\/\">PHP-Benchmarking<\/a> bereits hinter einer Reihe beliebter CMS-Plattformen und Frameworks platziert.<\/p>\n<p>Wenn du planst, <a href=\"https:\/\/www.php.net\/manual\/en\/migration85.php\">deine PHP-Anwendungen auf die Version 8.5 zu migrieren<\/a>, musst du wissen, was sich in dieser neuesten Version ge\u00e4ndert hat. Dazu geh\u00f6ren neue Funktionen, die du zur Verbesserung deines Codes nutzen kannst, und alte Funktionen, die die PHP-Entwickler abschaffen wollen.<\/p>\n<p>Hier sind die unserer Meinung nach wichtigsten Neuerungen der neuen Version:<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Neue Funktionen und Verbesserungen in PHP 8.5<\/h2>\n<p>Beginnen wir mit den neuen Erg\u00e4nzungen der PHP-Codebasis. Diese \u00c4nderungen beginnen in der Regel als <a href=\"https:\/\/wiki.php.net\/rfc\">Requests for Comments (RFCs)<\/a>, die schlie\u00dflich genehmigt und einer zuk\u00fcnftigen PHP-Version zugewiesen werden k\u00f6nnen.<\/p>\n<p>Die im Folgenden beschriebenen neuen Funktionen sind diejenigen, die die meiste Aufmerksamkeit rund um PHP 8.5 auf sich ziehen.<\/p>\n<div><\/div><kinsta-auto-toc list-style=\"disc\" selector=\"h3\" count-number=\"5\" sub-toc=\"true\"><\/kinsta-auto-toc>\n<h3>Funktionsaufrufe mit einem Pipe-Operator verketten<\/h3>\n<p>Ein neuer Pipe-Operator (<code class=\"language-php\">|&gt;<\/code>) verkettet Funktionsaufrufe auf eine Weise, die JavaScript-Programmierern vage bekannt vorkommen wird. Der Pipe-Operator arbeitet von links nach rechts und \u00fcbergibt bei jedem Schritt einen einzelnen Wert entlang der Kette.<\/p>\n<p>In fr\u00fcheren PHP-Versionen konnten Programmierer\/innen eine \u00e4hnliche Aufgabe erf\u00fcllen, indem sie Funktionen verschachtelten oder eine Reihe von Funktionsaufrufen mit dem jeweils zur\u00fcckgegebenen Wert durchliefen.<\/p>\n<p>Hier ist ein einfaches Beispiel, das den neuen Pipe-Operator verwendet:<\/p>\n<pre><code class=\"language-php\">$text = ' New-in-php-8.4 ';\n\n$result = $text\n    |&gt; trim(...)\n    |&gt; (fn($str) =&gt; str_replace('4', '5', $str))\n    |&gt; (fn($str) =&gt; str_replace('-', ' ', $str))\n    |&gt; strtoupper(...);\n\nvar_dump($result);\n\/\/ string(14) \"NEW IN PHP 8.5\"<\/code><\/pre>\n<p>(Beachte, dass wir die <a href=\"https:\/\/kinsta.com\/de\/blog\/php-8-1\/#firstclass-callable-syntax\">Syntax f\u00fcr First-Class-Callables<\/a> <code class=\"language-php\">(...)<\/code> verwenden, die in PHP 8.1 mit den Funktionsaufrufen <code class=\"language-php\">trim()<\/code> und <code class=\"language-php\">strtoupper()<\/code> eingef\u00fchrt wurde)<\/p>\n<p>Die obige Piping-Kette k\u00f6nnte in einer einzigen Zeile geschrieben werden, aber die Lesbarkeit soll einer der Vorteile dieses neuen Operators sein.<\/p>\n<p>Die obige Kette ist gleichbedeutend mit der Verschachtelung dieser Operationen (in umgekehrter Reihenfolge) wie folgt:<\/p>\n<pre><code class=\"language-php\">$text = \" New-in-php-8.4 \";\n\n$result = strtoupper(\n    str_replace(\u2018-, ' ',\n        str_replace('4', '5', \n            trim($text)\n         )\n     )\n);<\/code><\/pre>\n<p>Alternativ h\u00e4tte ein Programmierer die Aufgabe in fr\u00fcheren PHP-Versionen auch so l\u00f6sen k\u00f6nnen:<\/p>\n<pre><code class=\"language-php\">$text = \" New-in-php-8.4 \";\n\n$result = trim($text);\n$result = str_replace('4', '5', $result);\n$result = str_replace(\u2018-, ' ', $result);\n$result = strtoupper($result);<\/code><\/pre>\n<h3>URLs mit der neuen URI-Erweiterung parsen<\/h3>\n<p>URLs (f\u00fcr diejenigen, die es genauer wissen, auch URIs genannt) sind f\u00fcr die Navigation im Web unerl\u00e4sslich, aber die Funktion <code class=\"language-php\">parse_url()<\/code>, die seit Version 4 in PHP eingebaut ist, ist daf\u00fcr bekannt, dass sie Probleme mit fehlerhaften Eingaben hat, die zu Fehlern f\u00fchren k\u00f6nnen, wenn versucht wird, Website-Adressen zu manipulieren oder zu validieren.<\/p>\n<p>Um das URL-Parsing zu verbessern, enth\u00e4lt PHP 8.5 die Bibliotheken <a href=\"https:\/\/uriparser.github.io\/\">uriparser<\/a> und <a href=\"https:\/\/lexbor.com\/\">Lexbor<\/a> zur Unterst\u00fctzung der URL-Standards <a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/rfc3986\">RFC 3986<\/a> und <a href=\"https:\/\/url.spec.whatwg.org\/\">WHATWG<\/a>.<\/p>\n<p>Du kannst die uniparser-Bibliothek aufrufen, indem du die Arbeit mit der neuen URI-Erweiterung wie folgt beginnst:<\/p>\n<pre><code class=\"language-php\">$uri = new UriRfc3986Uri(\"https:\/\/kinsta.com\/blog\/php-8-5\/\"); \n\necho $uri-&gt;getScheme();       \/\/ https\necho $uri-&gt;getHost();         \/\/ kinsta.com\necho $uri-&gt;getPath();         \/\/ \/blog\/php-8-5<\/code><\/pre>\n<p>Alternativ dazu kannst du die Lexbor WHATWG URL-Bibliothek wie folgt ausw\u00e4hlen:<\/p>\n<pre><code class=\"language-php\">$uri = new UriWagWgUrl(\"https:\/\/kinsta.com\/blog\/php-8-5\/\"); \n\necho $uri-&gt;getScheme();       \/\/ https\necho $uri-&gt;getUnicodeHost();  \/\/ kinsta.com\necho $uri-&gt;getAsciiHost();    \/\/ kinsta.com\necho $uri-&gt;getPath();         \/\/ \/blog\/php-8-5<\/code><\/pre>\n<p>Die obigen Beispiele sind die grundlegendsten. Die beiden Bibliotheken, die durch die URI-Erweiterung in PHP 8.5 repr\u00e4sentiert werden, haben einige Funktionen gemeinsam und weisen auch erhebliche Unterschiede auf.<\/p>\n<p>Ein wichtiger Unterschied ist, dass die RFC 3986-Bibliothek sowohl &#8222;rohe&#8220; als auch &#8222;normalisiert-dekodierte&#8220; Darstellungen von URIs unterst\u00fctzt. Das kann bei der Arbeit mit prozentual kodierten Ein- und Ausgaben n\u00fctzlich sein. In einem Browser zum Beispiel sind diese beiden URIs identisch:<\/p>\n<ul>\n<li><a href=\"https:\/\/kinsta.com\/de\/mykinsta\/\">https:\/\/kinsta.com\/mykinsta\/<\/a><\/li>\n<li><a href=\"https:\/\/kinsta.com\/de\/mykinsta\/\">https:\/\/kinsta.com\/%6D%79%6B%69%6E%73%74%61\/<\/a><\/li>\n<\/ul>\n<p>In fr\u00fcheren PHP-Versionen konntest du mit <code class=\"language-php\">rawurldecode()<\/code> und <code class=\"language-php\">rawurlencode()<\/code> beginnen (die ebenfalls RFC 3986-konform sind), aber die neue Erweiterung ist sofort bereit, mit allen Komponenten von URIs zu arbeiten, unabh\u00e4ngig davon, ob sie kodiert sind oder nicht.<\/p>\n<p>Hier sind einige Beispiele direkt aus dem <a href=\"https:\/\/wiki.php.net\/rfc\/url_parsing_api\">RFC, der der neuen Parsing-API zugrunde liegt<\/a>:<\/p>\n<pre><code class=\"language-php\">$uri = new UriRfc3986Uri(\"https:\/\/%61pple:p%61ss@ex%61mple.com\/foob%61r?%61bc=%61bc\");\n  \necho $uri-&gt;getRawUserInfo();  \/\/ %61pple:p%61ss\necho $uri-&gt;getUserInfo();     \/\/ apple:pass\n \necho $uri-&gt;getRawUsername();  \/\/ %61pple\necho $uri-&gt;getUsername();     \/\/ apple\n \necho $uri-&gt;getRawPassword();  \/\/ p%61ss\necho $uri-&gt;getPassword();     \/\/ pass\n \necho $uri-&gt;getRawHost();      \/\/ ex%61mple.com\necho $uri-&gt;getHost();         \/\/ example.com\n \necho $uri-&gt;getRawPath();      \/\/ \/foob%61r\necho $uri-&gt;getPath();         \/\/ \/foobar\n \necho $uri-&gt;getRawQuery();     \/\/ %61bc=%61bc\necho $uri-&gt;getQuery();        \/\/ abc=abc<\/code><\/pre>\n<p>Wenn du die WHATWG-URL-Bibliothek mit der neuen Erweiterung verwendest, werden alle URIs als &#8222;roh&#8220; behandelt, es gibt also keinen separaten Funktionssatz zur Unterst\u00fctzung alternativer Formatierungen. Die Bibliothek kann jedoch zwischen ASCII- und Unicode-Zeichen konvertieren, die h\u00e4ufig in URIs vorkommen.<\/p>\n<h3>Strenge Regeln mit der neuen INI-Direktive max_memory_limit<\/h3>\n<p>Es hei\u00dft, dass mit gro\u00dfer Macht auch gro\u00dfe Verantwortung einhergeht. Wenn zu dieser Macht auch die Entscheidung geh\u00f6rt, wie viel Serverspeicher deine PHP-Anwendung nutzen darf, k\u00f6nntest du f\u00fcr Anwendungsabst\u00fcrze verantwortlich sein, wenn Prozesse mehr Speicher verbrauchen als verf\u00fcgbar ist.<\/p>\n<p>Zu einer typischen PHP-Installation geh\u00f6rt eine <code>php.ini<\/code> Datei mit Konfigurationsinformationen, die eine Direktive zur Begrenzung des Speicherverbrauchs f\u00fcr jeden PHP-Prozess (<a href=\"https:\/\/kinsta.com\/de\/blog\/php-threads-vs-php-speicherlimit\/\">oder Thread<\/a>) enth\u00e4lt. Eine \u00fcbliche INI-Direktive f\u00fcr ein Speicherlimit von 128 MB sieht wie folgt aus:<\/p>\n<pre><code>\/\/ php.ini\nmemory_limit 128M<\/code><\/pre>\n<p>Auf einigen Hosting-Plattformen k\u00f6nnen Entwickler von PHP-Anwendungen <code>memory_limit<\/code> mit der Funktion <code class=\"language-php\">ini_set()<\/code> in ihrem Code au\u00dfer Kraft setzen:<\/p>\n<pre><code class=\"language-php\">ini_set(\u2018memory_limit\u2019, \u2018256M\u2019);\n \n\/\/ Start code that requires up to 256 MB of memory<\/code><\/pre>\n<p>Du kannst der Funktion auch den Wert <strong>-1<\/strong> \u00fcbergeben, wie bei <code class=\"language-php\">ini_set('memory_limit', '-1')<\/code> &#8211; um \u00fcberhaupt keine Begrenzung zu erzwingen.<\/p>\n<p>Das \u00dcberschreiben der INI-Direktive f\u00fcr ein Speicherlimit kann f\u00fcr Entwickler\/innen, die mit den Speicherkonfigurationen der Server, auf denen ihre Anwendungen laufen, nicht genau vertraut sind, riskant sein. Wenn ein oder mehrere PHP-Threads versuchen, mehr als den gesamten Speicherpool zu verbrauchen, kann dies zu einem Absturz der Anwendung f\u00fchren, ohne dass eine Warnung ausgegeben wird.<\/p>\n<p>PHP 8.5 f\u00fcgt eine <code>max_memory_limit<\/code> INI-Direktive hinzu, die als harte Obergrenze dient, selbst wenn die Entwickler\/innen Zugriff auf <code class=\"language-php\">init_set()<\/code> haben, um die Speichernutzung in ihrem Code zu optimieren.<\/p>\n<p>Hier sind Beispieleintr\u00e4ge in der <code>php.ini<\/code> Datei einer PHP 8.5 Installation:<\/p>\n<pre><code>\/\/ php.ini\nmax_memory_limit 256M\nmemory_limit 128M<\/code><\/pre>\n<p>Mit einer <code>max_memory_limit<\/code> von 256 MB passiert folgendes in unserem PHP-Code:<\/p>\n<pre><code class=\"language-php\">ini_set('memory_limit', '256M');  \/\/ This is OK\nini_set('memory_limit', '512M');  \/\/ Fail with warning\nini_set('memory_limit', '-1');    \/\/ Fail with warning<\/code><\/pre>\n<p>Der Versuch, ein neues Speicherlimit von 512 MB (oder unbegrenzt) zu setzen, ist nicht erfolgreich. Stattdessen wird PHP das Speicherlimit auf den Wert setzen, der <code>max_memory_limit<\/code> in der Datei <code>php.ini<\/code> zugewiesen wurde, und eine Warnung ausgeben. (Je nach den Einstellungen der PHP-Installation f\u00fcr die Fehlermeldung wird die Warnmeldung m\u00f6glicherweise auf dem Bildschirm angezeigt und protokolliert)<\/p>\n<p>Ein kluger Ansatz f\u00fcr PHP 8.5-Entwickler w\u00e4re es, die Funktion <code class=\"language-php\">ini_get()<\/code> zu verwenden, um zu sehen, ob die neue H\u00f6chstgrenze definiert wurde, wie <code class=\"language-php\">ini_get('max_memory_limit')<\/code> &#8211; und dann entsprechend dem zur\u00fcckgegebenen Wert anzupassen. Bei PHP-Versionen vor 8.5 w\u00fcrde dieser Aufruf sicher <code>false<\/code> zur\u00fcckgeben.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Der Speicher wird bei Kinsta etwas anders verwaltet. Mit dem <a href=\"https:\/\/kinsta.com\/de\/docs\/wordpress-hosting\/php\/wordpress-php-leistung\/\">PHP-Performance-Tool<\/a> kannst du die Anzahl der Threads und den jedem von ihnen zugewiesenen Speicher jonglieren. Mit demselben Tool kannst du (gegen eine Geb\u00fchr) die Gr\u00f6\u00dfe des gesamten Speicherpools, den sich die Threads teilen, erh\u00f6hen oder verringern.<\/p>\n<\/aside>\n\n<h3>Den ersten oder letzten Wert in einem Array abgreifen<\/h3>\n<p>Hebe deine Hand, wenn du angenommen hast, dass PHP bereits \u00fcber Funktionen verf\u00fcgt, um die Werte zu lesen, die als erstes oder letztes Mitglied eines Arrays gespeichert sind.<\/p>\n<p>Das war aber nicht der Fall. Aber seit <a href=\"https:\/\/kinsta.com\/de\/blog\/php-7-3\/#array-key-first-last\">PHP 7.3<\/a> gibt es Funktionen, um den ersten und letzten <strong>Schl\u00fcssel<\/strong> in einem Array zu ermitteln. Um den ersten und letzten Wert zu finden, kannst du also die Funktionen <code class=\"language-php\">array_key_first()<\/code> oder <code class=\"language-php\">array_key_last()<\/code> verwenden und dann die zur\u00fcckgegebenen Schl\u00fcssel benutzen, um auf die gesuchten Werte zu verweisen:<\/p>\n<pre><code class=\"language-php\">$array = [\"One\", \"Two\", \"Three\"];\n\necho $array[array_key_first($array)]; \/\/ \"One\"\n<\/code><\/pre>\n<p>Mit PHP 8.5 entf\u00e4llt ein Schritt f\u00fcr diese Aufgabe und du kannst die Werte direkt mit den neuen Funktionen <code class=\"language-php\">array_first()<\/code> und <code class=\"language-php\">array_last()<\/code> erreichen.<\/p>\n<p>Es ist alles ganz einfach:<\/p>\n<pre><code class=\"language-php\">$array = [\"One\", \"Two\", \"Three\"];\n\necho array_first($array);  \/\/ \"One\"\necho array_last($array);   \/\/ \"Three\"\necho array_last([]);       \/\/ null<\/code><\/pre>\n<p>Oben siehst du, dass ein leeres Array <code>null<\/code> zur\u00fcckgibt, aber das allein best\u00e4tigt noch nicht, dass das gesamte Array leer ist, denn ein Array-Wert kann auch null sein:<\/p>\n<pre><code class=\"language-php\">echo array_last([1, 2, null]); \/\/ null<\/code><\/pre>\n<h3>Erinnere dich daran, den R\u00fcckgabewert einer Funktion zu verwenden<\/h3>\n<p>PHP 5.8 f\u00fcgt ein neues Attribut <code class=\"language-php\">#[NoDiscard]<\/code> hinzu, das anzeigt, dass der R\u00fcckgabewert einer Funktion kritisch sein k\u00f6nnte. PHP \u00fcberpr\u00fcft, ob der R\u00fcckgabewert auf irgendeine Weise verbraucht wird, und l\u00f6st andernfalls eine Warnung aus.<\/p>\n<p>Ein einfaches Beispiel:<\/p>\n<pre><code class=\"language-php\">#[NoDiscard(\"this message property will be appended to the built-in warning.\")]\nfunction foo(): string {\n    return 'bar';\n}\n\n\/\/ Warning:\n\/\/ The return value of function foo() is expected to be consumed,\n\/\/ this message property will be appended to the built-in warning.\nfoo();\n\n\/\/ This will not trigger a warning:\n$result = foo();\n\n\/\/ Also satisfactory is the (void) cast:\n(void) foo();<\/code><\/pre>\n<p>Im obigen Beispiel wird der R\u00fcckgabewert der definierten Funktion zun\u00e4chst \u00fcberhaupt nicht verwendet, was eine Warnung ausl\u00f6st. Wenn er jedoch der Variablen <code class=\"language-php\">$result<\/code> zugewiesen oder als <code class=\"language-php\">void<\/code> gecastet wird, gilt der Wert als verbraucht.<\/p>\n<p>Die Autoren des <a href=\"https:\/\/wiki.php.net\/rfc\/marking_return_value_as_important\">RFC, der dieser Erg\u00e4nzung zu PHP 8.5 zugrunde liegt<\/a>, haben f\u00fcr dieses Attribut zwingendere Verwendungszwecke beschrieben als das einfache Beispiel oben. Ein Szenario war eine kritische Funktion mit einer komplexeren Fehlermeldung als einem einfachen Pass\/Fail, die am besten durch den R\u00fcckgabewert der Funktion vermittelt wird.<\/p>\n<h4>Andere Verbesserungen in Bezug auf Attribute<\/h4>\n<p>Neben dem neuen Attribut <code class=\"language-php\">#[NoDiscard]<\/code> gibt es in der neuen Version noch weitere Verbesserungen der Attribut-Metadatenfunktionalit\u00e4t:<\/p>\n<ul>\n<li>Attribute k\u00f6nnen jetzt auf Konstanten abzielen.<\/li>\n<li>Das Attribut <code class=\"language-php\">#[Override]<\/code> kann jetzt auf Eigenschaften angewendet werden.<\/li>\n<li>Das Attribut <code class=\"language-php\">#[Deprecated]<\/code> kann auf Eigenschaften und Konstanten angewendet werden.<\/li>\n<li>Ein neues <code class=\"language-php\">#[DelayedTargetValidation]<\/code> Attribut kann verwendet werden, um Kompilierungsfehler von Kern- und Erweiterungsattributen zu unterdr\u00fccken, die auf ung\u00fcltige Ziele angewendet werden.<\/li>\n<\/ul>\n<h2>Verwerfungen und Entfernungen in PHP 8.5<\/h2>\n<p>Mit jeder PHP-Version wird eine Liste von Funktionen ver\u00f6ffentlicht, die in zuk\u00fcnftigen Versionen entfernt werden sollen. Die Verwendung veralteter Funktionen in deinem Code f\u00fchrt zu Warnungen. Wenn sie schlie\u00dflich aus PHP entfernt werden, kann ihre Verwendung zu fatalen Fehlern f\u00fchren.<\/p>\n<p>Hier sind einige bemerkenswerte Elemente, die in PHP 8.5 veraltet sind oder entfernt wurden:<\/p>\n<ul>\n<li>Der Backtick-Operator als Alias f\u00fcr <code class=\"language-php\">shell_exec()<\/code> ist veraltet.<\/li>\n<li>Die nicht-kanonischen Cast-Namen <code class=\"language-php\">(boolean)<\/code>, <code class=\"language-php\">(integer)<\/code>, <code class=\"language-php\">(double)<\/code> und <code class=\"language-php\">(binary)<\/code> sind veraltet. Verwende stattdessen <code class=\"language-php\">(bool)<\/code>, <code class=\"language-php\">(int)<\/code>, <code class=\"language-php\">(float)<\/code> und <code class=\"language-php\">(string)<\/code>.<\/li>\n<li>Die INI-Einstellung disable_classes wurde entfernt, da sie dazu f\u00fchrt, dass verschiedene Annahmen der Engine gebrochen werden.<\/li>\n<li>Das Beenden von <code class=\"language-php\">case<\/code> Anweisungen mit einem Semikolon anstelle eines Doppelpunkts ist nicht mehr empfehlenswert.<\/li>\n<li>Die Verwendung von Null als Array-Offset oder beim Aufruf von <code class=\"language-php\">array_key_exists()<\/code> ist jetzt veraltet. Verwende stattdessen einen leeren String.<\/li>\n<li>Es ist nicht mehr m\u00f6glich, &#8222;array&#8220; und &#8222;callable&#8220; als Klassenaliasnamen in <code class=\"language-php\">class_alias()<\/code> zu verwenden.<\/li>\n<li>Die magischen Methoden <code class=\"language-php\">__sleep()<\/code> und <code class=\"language-php\">__wakeup()<\/code> sind jetzt veraltet. Stattdessen sollten die magischen Methoden <code class=\"language-php\">__serialize()<\/code> und <code class=\"language-php\">__unserialize()<\/code> verwendet werden.<\/li>\n<li>Beim Casting von NAN in andere Typen wird jetzt eine Warnung ausgegeben.<\/li>\n<li>Bei der Destrukturierung von Nicht-Array-Werten (au\u00dfer Null) mit <code class=\"language-php\">[]<\/code> oder <code class=\"language-php\">list()<\/code> wird jetzt eine Warnung ausgegeben.<\/li>\n<li>Beim Casting von Floats (oder Strings, die wie Floats aussehen) nach <code class=\"language-php\">int<\/code> wird jetzt eine Warnung ausgegeben, wenn sie nicht als Float dargestellt werden k\u00f6nnen.<\/li>\n<\/ul>\n<h2>Zusammenfassung<\/h2>\n<p>Das war ein Blick auf die Highlights der PHP 8.5 Version. Wir sind sicher, dass der neue Pipe-Operator und das verbesserte URI-Parsing bei den Entwicklern gut ankommen werden. Vielleicht sogar die neuen Funktionen <code class=\"language-php\">array_first()<\/code> und <code class=\"language-php\">array_last()<\/code>, auf die wir gewettet h\u00e4tten, dass es sie schon gibt.<\/p>\n<p>Aber jede neue PHP-Version umfasst Hunderte von \u00c4nderungen. Eine <a href=\"https:\/\/github.com\/php\/php-src\/blob\/PHP-8.5\/UPGRADING\">vollst\u00e4ndige Liste der PHP 8.5 Updates<\/a> findest du im offiziellen GitHub Repository der PHP Group.<\/p>\n<p>In der Zwischenzeit arbeiten wir bei Kinsta daran, PHP 8.5 f\u00fcr unsere <a href=\"https:\/\/kinsta.com\/de\/wordpress-hosting\/\">WordPress-Hosting-Kunden<\/a> verf\u00fcgbar zu machen. Sobald diese Version online ist, kannst du mit unseren <a href=\"https:\/\/kinsta.com\/de\/docs\/wordpress-hosting\/php\/wordpress-neustarten-update-php\/#update-php\">PHP-Einstellungen<\/a> auf die neue Version umsteigen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die PHP Group hat die Version 8.5 der Open-Source-Skriptsprache ver\u00f6ffentlicht, mit der ein Gro\u00dfteil des Internets betrieben wird, darunter auch Websites, die das WordPress CMS nutzen. &#8230;<\/p>\n","protected":false},"author":259,"featured_media":74863,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[971],"class_list":["post-74862","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-php-updates"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>PHP 8.5: Hier sind die Neuheiten der aktuellen Version<\/title>\n<meta name=\"description\" content=\"Es ist wieder die Zeit des Jahres, in der eine neue Version von PHP rauskommt. Hier sind die Highlights der Neuerungen in PHP 8.5.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/de\/blog\/php-8-5\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PHP 8.5: Das ist neu in der neuesten Version\" \/>\n<meta property=\"og:description\" content=\"Es ist wieder die Zeit des Jahres, in der eine neue Version von PHP rauskommt. Hier sind die Highlights der Neuerungen in PHP 8.5.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/de\/blog\/php-8-5\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-05T08:27:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-08T13:34:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2025\/12\/whats-new-in-php-8.5.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1470\" \/>\n\t<meta property=\"og:image:height\" content=\"735\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Steve Bonisteel\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Es ist wieder die Zeit des Jahres, in der eine neue Version von PHP rauskommt. Hier sind die Highlights der Neuerungen in PHP 8.5.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2025\/12\/whats-new-in-php-8.5.png\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_DE\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_DE\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Steve Bonisteel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"11\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/php-8-5\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/php-8-5\/\"},\"author\":{\"name\":\"Steve Bonisteel\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f\"},\"headline\":\"PHP 8.5: Das ist neu in der neuesten Version\",\"datePublished\":\"2025-12-05T08:27:29+00:00\",\"dateModified\":\"2025-12-08T13:34:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/php-8-5\/\"},\"wordCount\":1689,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/php-8-5\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2025\/12\/whats-new-in-php-8.5.png\",\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/php-8-5\/\",\"url\":\"https:\/\/kinsta.com\/de\/blog\/php-8-5\/\",\"name\":\"PHP 8.5: Hier sind die Neuheiten der aktuellen Version\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/php-8-5\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/php-8-5\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2025\/12\/whats-new-in-php-8.5.png\",\"datePublished\":\"2025-12-05T08:27:29+00:00\",\"dateModified\":\"2025-12-08T13:34:45+00:00\",\"description\":\"Es ist wieder die Zeit des Jahres, in der eine neue Version von PHP rauskommt. Hier sind die Highlights der Neuerungen in PHP 8.5.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/php-8-5\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/php-8-5\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/php-8-5\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2025\/12\/whats-new-in-php-8.5.png\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2025\/12\/whats-new-in-php-8.5.png\",\"width\":1470,\"height\":735},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/php-8-5\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PHP-Updates\",\"item\":\"https:\/\/kinsta.com\/de\/thema\/php-updates\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"PHP 8.5: Das ist neu in der neuesten Version\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/de\/#website\",\"url\":\"https:\/\/kinsta.com\/de\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/de\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/de\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/de\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\",\"https:\/\/x.com\/Kinsta_DE\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f\",\"name\":\"Steve Bonisteel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g\",\"caption\":\"Steve Bonisteel\"},\"description\":\"Steve Bonisteel is a Technical Editor at Kinsta who began his writing career as a print journalist, chasing ambulances and fire trucks. He has been covering Internet-related technology since the late 1990s.\",\"url\":\"https:\/\/kinsta.com\/de\/blog\/author\/stevebonisteel\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"PHP 8.5: Hier sind die Neuheiten der aktuellen Version","description":"Es ist wieder die Zeit des Jahres, in der eine neue Version von PHP rauskommt. Hier sind die Highlights der Neuerungen in PHP 8.5.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/de\/blog\/php-8-5\/","og_locale":"de_DE","og_type":"article","og_title":"PHP 8.5: Das ist neu in der neuesten Version","og_description":"Es ist wieder die Zeit des Jahres, in der eine neue Version von PHP rauskommt. Hier sind die Highlights der Neuerungen in PHP 8.5.","og_url":"https:\/\/kinsta.com\/de\/blog\/php-8-5\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","article_published_time":"2025-12-05T08:27:29+00:00","article_modified_time":"2025-12-08T13:34:45+00:00","og_image":[{"width":1470,"height":735,"url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2025\/12\/whats-new-in-php-8.5.png","type":"image\/png"}],"author":"Steve Bonisteel","twitter_card":"summary_large_image","twitter_description":"Es ist wieder die Zeit des Jahres, in der eine neue Version von PHP rauskommt. Hier sind die Highlights der Neuerungen in PHP 8.5.","twitter_image":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2025\/12\/whats-new-in-php-8.5.png","twitter_creator":"@Kinsta_DE","twitter_site":"@Kinsta_DE","twitter_misc":{"Verfasst von":"Steve Bonisteel","Gesch\u00e4tzte Lesezeit":"11\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/de\/blog\/php-8-5\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/blog\/php-8-5\/"},"author":{"name":"Steve Bonisteel","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f"},"headline":"PHP 8.5: Das ist neu in der neuesten Version","datePublished":"2025-12-05T08:27:29+00:00","dateModified":"2025-12-08T13:34:45+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/php-8-5\/"},"wordCount":1689,"publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/php-8-5\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2025\/12\/whats-new-in-php-8.5.png","inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/de\/blog\/php-8-5\/","url":"https:\/\/kinsta.com\/de\/blog\/php-8-5\/","name":"PHP 8.5: Hier sind die Neuheiten der aktuellen Version","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/php-8-5\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/php-8-5\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2025\/12\/whats-new-in-php-8.5.png","datePublished":"2025-12-05T08:27:29+00:00","dateModified":"2025-12-08T13:34:45+00:00","description":"Es ist wieder die Zeit des Jahres, in der eine neue Version von PHP rauskommt. Hier sind die Highlights der Neuerungen in PHP 8.5.","breadcrumb":{"@id":"https:\/\/kinsta.com\/de\/blog\/php-8-5\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/de\/blog\/php-8-5\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/blog\/php-8-5\/#primaryimage","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2025\/12\/whats-new-in-php-8.5.png","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2025\/12\/whats-new-in-php-8.5.png","width":1470,"height":735},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/de\/blog\/php-8-5\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/de\/"},{"@type":"ListItem","position":2,"name":"PHP-Updates","item":"https:\/\/kinsta.com\/de\/thema\/php-updates\/"},{"@type":"ListItem","position":3,"name":"PHP 8.5: Das ist neu in der neuesten Version"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/de\/#website","url":"https:\/\/kinsta.com\/de\/","name":"Kinsta\u00ae","description":"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen","publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/de\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","https:\/\/x.com\/Kinsta_DE","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f","name":"Steve Bonisteel","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g","caption":"Steve Bonisteel"},"description":"Steve Bonisteel is a Technical Editor at Kinsta who began his writing career as a print journalist, chasing ambulances and fire trucks. He has been covering Internet-related technology since the late 1990s.","url":"https:\/\/kinsta.com\/de\/blog\/author\/stevebonisteel\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/74862","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/users\/259"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/comments?post=74862"}],"version-history":[{"count":3,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/74862\/revisions"}],"predecessor-version":[{"id":74898,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/74862\/revisions\/74898"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/74862\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/74862\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/74862\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/74862\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/74862\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/74862\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/74862\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/74862\/translations\/es"},{"href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/74862\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media\/74863"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media?parent=74862"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/tags?post=74862"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/topic?post=74862"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}