{"id":71731,"date":"2024-11-08T14:34:10","date_gmt":"2024-11-08T13:34:10","guid":{"rendered":"https:\/\/kinsta.com\/de\/?p=71731&#038;preview=true&#038;preview_id=71731"},"modified":"2024-11-11T15:31:26","modified_gmt":"2024-11-11T14:31:26","slug":"php-8-4","status":"publish","type":"post","link":"https:\/\/kinsta.com\/de\/blog\/php-8-4\/","title":{"rendered":"PHP 8.4: Hier sind die Neuerungen und Verbesserungen"},"content":{"rendered":"<p>K\u00fcrbisgew\u00fcrz liegt in der Luft, also ist es Zeit f\u00fcr eine neue Version von <a href=\"https:\/\/kinsta.com\/php\">PHP<\/a>, der serverseitigen Skriptsprache, die unser Lieblings-CMS, <a href=\"https:\/\/kinsta.com\/wordpress\">WordPress<\/a>, antreibt. Im Vorfeld der Ver\u00f6ffentlichung von Version 8.4 am 21. November haben die PHP-Entwickler zahlreiche fr\u00fche Versionen der neuen Codebasis vorgestellt, darunter eine Handvoll Release Candidates seit dem Einfrieren der Funktionen im August.<\/p>\n<p>Neben den neuen Funktionen, Verbesserungen und Verwerfungen, die wir in diesem Jahr erwarten, gab es 2024 auch \u00c4nderungen am PHP-Ver\u00f6ffentlichungszyklus: Das Ende der Sicherheitsversionen f\u00fcr alle derzeit unterst\u00fctzten Versionen wurde mit dem Jahresende statt mit dem GA-Geburtstag synchronisiert.<\/p>\n<p>Au\u00dferdem wurde der Support um ein Jahr verl\u00e4ngert, so dass du PHP 8.4 sicher bis 2028 nutzen kannst (mit zwei Jahren Sicherheits- und Bugfixes und zwei Jahren reinen Sicherheitsfixes).<\/p>\n<p>Du k\u00f6nntest zwar mehr Zeit mit PHP 8.4 verbringen, aber wahrscheinlich willst du jetzt schon wissen, was in dieser Version neu ist. Also, lass uns loslegen.<\/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.4<\/h2>\n<p>Die neuen Funktionen, die in <a href=\"https:\/\/kinsta.com\/de\/blog\/php-8-3\/\">PHP 8.3<\/a> im letzten Jahr enthalten waren, werden dir im Vergleich zu den Neuerungen in 8.4 eher unscheinbar vorkommen:<\/p>\n<div><\/div><kinsta-auto-toc list-style=\"disc\" selector=\"h3\" count-number=\"6\" sub-toc=\"true\"><\/kinsta-auto-toc>\n<h3>Eigenschaftshaken<\/h3>\n<p>Eigenschaftshaken bieten einen v\u00f6llig neuen Ansatz f\u00fcr den Umgang mit &#8222;Gettern&#8220; und &#8222;Settern&#8220; in der <a href=\"https:\/\/kinsta.com\/de\/blog\/oop-php\/\">objektorientierten Programmierung (OOP) von PHP<\/a>, mit dem du die Struktur deiner Klassendateien vereinfachen kannst.<\/p>\n<p>Als Beispiel daf\u00fcr, was Eigenschaftshaken ersetzen k\u00f6nnen, enth\u00e4lt die folgende einfache Klasse die Eigenschaften <code>$size<\/code> und <code>$flavor<\/code>. Sie haben <code>private<\/code> Sichtbarkeit, um sie vor direktem Zugriff au\u00dferhalb des resultierenden Objekts zu sch\u00fctzen. Deshalb vermitteln \u00f6ffentliche Getter- und Setter-Methoden den Zugriff auf die Eigenschaften:<\/p>\n<pre><code class=\"language-php\">class Coffee\n{\n    private string $size;\n    private string $flavor;\n    public function __construct(string $size, string $flavor) {\n        $this-&gt;size   = $size;\n        $this-&gt;flavor = $flavor;\n    }\n\n    \/\/ \"Setting\" coffee size and flavor\n    public function setSize(string $size): void {\n        $this-&gt;size = $size;\n    }\n    public function setFlavor(string $flavor): void {\n        $this-&gt;flavor = $flavor;\n    }\n\n    \/\/ \"Getting\" coffee size and flavor\n    public function getSize(): string {\n        return $this-&gt;size;\n    }\n    public function getFlavor(): string {\n        return $this-&gt;flavor;\n    }\n} \/\/ End of class\n\n\/\/ Make some coffee\n$coffee = new Coffee('Small', 'Pumpkin Spice');\nprint $coffee-&gt;getSize() . ' ' . $coffee-&gt;getFlavor(); \/\/ Prints \"Small Pumpkin Spice\"\n\n\/\/ Change order\n$coffee-&gt;setSize('Grande');\n$coffee-&gt;setFlavor('Mocha');\nprint $coffee-&gt;getSize() . ' ' . $coffee-&gt;getFlavor(); \/\/ Prints \"Grande Mocha\"<\/code><\/pre>\n<p>Vielleicht hat deine Klasse aber auch viele Eigenschaften, und statt viele Getter- und Setter-Methoden zu schreiben, nutzt du die magischen Methoden von PHP <code>_get<\/code> und <code>_set<\/code>. Du k\u00f6nntest die Dinge sogar in einer etwas chaotischen <code>switch<\/code> Anweisung wie diesem Auszug unten regeln.<\/p>\n<pre><code class=\"language-php\">\/\/ __set magic method example\npublic function __set(string $key, $value): void \n    switch ($key) {\n        case 'size':\n            $this-&gt;size = $value;\n            break;\n        case 'flavor':\n            $this-&gt;flavor = $value;\n            break;\n        default:\n            throw new InvalidArgumentException('Invalid input');\n        }\n}\n\n\/\/ Later, we can change the coffee order like this:\n$coffee-&gt;size = 'Grande';\n$coffee-&gt;flavor = 'Mocha';<\/code><\/pre>\n<p>F\u00fcr welchen Ansatz du dich auch entscheidest, je mehr Eigenschaften du in deiner Klasse hast, desto weiter entfernt sich der Code, mit dem du sie manipulierst, von ihren Definitionen am Anfang deiner Klassendatei. Au\u00dferdem k\u00f6nnen einige Implementierungen der magischen Methoden <code>_get<\/code> und <code>_set<\/code> unerwartet Zugriff auf private oder gesch\u00fctzte Eigenschaften deines Objekts geben, die du eigentlich nicht offenlegen wolltest.<\/p>\n<p>Die neue Funktion Property Hooks b\u00fcndelt die Getter- und Setter-Funktionen mit den Eigenschaften selbst. Im folgenden Beispiel mit den Eigenschaftshaken siehst du, dass die Eigenschaften <code>$size<\/code> und <code>$flavor<\/code> der Klasse Kaffee jetzt \u00f6ffentlich sind. Au\u00dferdem haben wir den <code>set<\/code> Hooks eine grundlegende Validierung hinzugef\u00fcgt, um sie von direkten Zuweisungen zu unterscheiden.<\/p>\n<pre><code class=\"language-php\">\/\/ Property definitions at the top of our Coffee class\nclass Coffee\n{\n    public string $flavor {\n        set(string $value) {\n            if (strlen($value) &gt; 16) throw new InvalidArgumentException('Input is too long');\n                $this-&gt;flavor = $value;\n        }\n    }\n\n    public string $size {\n        set(string $value) {\n            if (! in_array($value, array(\u2018Small\u2019, \u2018Grande\u2019))) throw new InvalidArgumentException('Not a valid size');\n                $this-&gt;size = $value;\n        }\n    }\n\n    \/\/ Rest of the Coffee class\n}\n\n\/\/ Define a coffee\n$coffee = new Coffee();\n$coffee-&gt;size = 'Grande';\n$coffee-&gt;flavor = 'Pumpkin spice';<\/code><\/pre>\n<p>Wie du weiter unten sehen kannst, kann ein <code>get<\/code> Hook auch Funktionen in einen scheinbar gew\u00f6hnlichen Verweis auf eine Objekteigenschaft packen.<\/p>\n<pre><code class=\"language-php\">\/\/ Simplified Coffee class\nclass Coffee\n{\n    public string $flavor {\n        get { \n            return $this-&gt;flavor . ' Spice';\n       }\n    }\n}\n\n\/\/ Create a flavor \n$coffee = new Coffee();\n$coffee-&gt;flavor = 'Pumpkin'; \/\/ Stores the value \"Pumpkin\"\nprint $coffee-&gt;flavor;       \/\/ Prints \"Pumpkin Spice\"<\/code><\/pre>\n<p>Im Gegensatz zu den magischen PHP-Methoden k\u00f6nnen Eigenschaftshaken in Schnittstellen und abstrakten Klassen verwendet werden. Ein Beispiel f\u00fcr eine Schnittstelle:<\/p>\n<pre><code class=\"language-php\">interface Coffee\n{\n    public string $size { get; set; }\n    public string $flavor { get; set; }\n}<\/code><\/pre>\n<h3>Asymmetrische Sichtbarkeit<\/h3>\n<p>Die \u00f6ffentlich sichtbaren Getter- und Setter-Methoden, die wir uns vorhin angesehen haben, stellen den traditionellen Ansatz f\u00fcr den Zugriff auf private und gesch\u00fctzte Eigenschaften innerhalb ihrer Klassen dar.<\/p>\n<p>Ein raffiniertes Feature von PHP 8.4 ist die M\u00f6glichkeit, dass eine Eigenschaft je nach Kontext, in dem auf sie zugegriffen wird, unterschiedliche Sichtbarkeitsstufen hat. So kann eine Eigenschaft \u00f6ffentlich sein, wenn sie gelesen wird, aber privat oder gesch\u00fctzt, wenn sie gesetzt wird.<\/p>\n<p>Schau dir das an:<\/p>\n<pre><code class=\"language-php\">class Coffee\n{\n    public private(set) string $flavor = 'Pumpkin Spice';\n}\n\n$coffee = new Coffee();\nprint $coffee-&gt;flavor;     \/\/ Prints \"Pumpkin Spice\"\n$coffee-&gt;flavor = 'Mocha';  \/\/ Error (visibility)<\/code><\/pre>\n<p>Oben ist die Eigenschaft <code>$flavor<\/code> der Klasse \u00f6ffentlich, au\u00dfer in einem Einstellungskontext. Das ist schon ziemlich einfach, aber die asymmetrische Sichtbarkeit hat sogar eine kleine Abk\u00fcrzung:<\/p>\n<pre><code class=\"language-php\">class Coffee\n{\n    \/\/ public is assumed when the context is not setting\n    private(set) string $flavor = 'Pumpkin Spice';\n}<\/code><\/pre>\n<p>Du kannst Eigenschaftshaken und asymmetrische Sichtbarkeit in Kombination verwenden, um eine enorme Flexibilit\u00e4t bei der Arbeit mit Objekteigenschaften mit verschiedenen Sichtbarkeiten zu erreichen.<\/p>\n<h3>Verkettung von <code>new<\/code> ohne Klammern<\/h3>\n<p>Apropos Abk\u00fcrzungen: F\u00fcr den Aufruf von <code>new<\/code> und die Verkettung von Methoden war es fr\u00fcher erforderlich, den Aufruf in Klammern zu setzen, etwa so:<\/p>\n<pre><code class=\"language-php\">$coffee = (new Coffee())-&gt;getFlavor()-&gt;getSize();<\/code><\/pre>\n<p>PHP 8.4 erlaubt dies:<\/p>\n<pre><code class=\"language-php\">$coffee = new Coffee()-&gt;getFlavor()-&gt;getSize();<\/code><\/pre>\n<p>Es mag wie eine kleine \u00c4nderung erscheinen, aber das Weglassen von nur zwei Klammern macht es viel einfacher zu lesen und zu debuggen.<\/p>\n<h3>Neue Funktionen zum Auffinden von Array-Elementen<\/h3>\n<p>Mit PHP 8.4 wurde die Funktion <code>array_find()<\/code> eingef\u00fchrt, mit der Array-Elemente nach Elementen durchsucht werden k\u00f6nnen, die den in einer Callback-Funktion festgelegten Bedingungen entsprechen. Die Funktion gibt den Wert des ersten Elements zur\u00fcck, das dem Test der Callback-Funktion entspricht.<\/p>\n<p>Die neue Version enth\u00e4lt drei weitere verwandte Funktionen:<\/p>\n<ul>\n<li><code>array_find_key()<\/code>: Wie <code>array_find()<\/code>, aber der R\u00fcckgabewert ist der Schl\u00fcssel des \u00fcbereinstimmenden Elements und nicht der Wert des Elements selbst.<\/li>\n<li><code>array_all()<\/code>: Gibt <code>true<\/code> zur\u00fcck, wenn <em>jedes<\/em> Element im getesteten Array mit dem Test des R\u00fcckrufs \u00fcbereinstimmt.<\/li>\n<li><code>array_any()<\/code>: Gibt <code>true<\/code> zur\u00fcck, wenn <em>mindestens eines<\/em> der Elemente im Array mit dem Test des Callbacks \u00fcbereinstimmt.<\/li>\n<\/ul>\n<p>Beachte, dass die letzten beiden Funktionen boolesche Indikatoren anstelle von Array-Schl\u00fcsseln oder -Inhalten zur\u00fcckgeben.<\/p>\n<p>Hier sind einige kurze Beispiele:<\/p>\n<pre><code class=\"language-php\">$array = [\n    'a' =&gt; 'Mocha',\n    'b' =&gt; 'Caramel',\n    'c' =&gt; 'Maple',\n    'd' =&gt; 'Pumpkin'\n   ];\n\n\/\/ Find the first flavor name that is 5 characters long\nvar_dump(array_find($array, function (string $value) {\n    return strlen($value) == 5;\n})); \/\/ Returns \u201cMocha,\u201d even though \u201cMaple\u201d is the same length \n\n\/\/ Find the array key for the first flavor with a name longer than 5 characters.\nvar_dump(array_find_key($array, function (string $value) {\n    return strlen($value) &gt; 5;\n})); \/\/ Returns \u201cb\u201d\n\n\/\/ Check to see if any flavor name is less than 5 characters long\nvar_dump(array_any($array, function (string $value) {\n    return strlen($value) &lt; 5;\n})); \/\/ Returns false\n\n\/\/ Check to see if all flavor names are shorter than 8 characters\nvar_dump(array_all($array, function (string $value) {\n    return strlen($value) &lt; 8;\n})); \/\/ Returns true<\/code><\/pre>\n<h3>HTML5-Parsing<\/h3>\n<p>HTM5 ist der defacto-Standard f\u00fcr die Struktur moderner Webseiten, aber die Parsing-Technologie von PHP f\u00fcr das Document Object Model (DOM) war bei HTML 4.01 stehen geblieben.<\/p>\n<p>Anstatt die bestehende Klasse <code>DOMDocument<\/code> zu aktualisieren, die mit den \u00e4lteren HTML-Standards arbeitet, bietet PHP 8.4 eine neue Klasse <code>DomHTMLDocument<\/code>, die HTM5-f\u00e4hig ist.<\/p>\n<p>Du kannst den Inhalt einer HTML5-Seite wie folgt importieren:<\/p>\n<pre><code class=\"language-php\">$document = DomHTMLDocument::createFromString($html)<\/code><\/pre>\n<p>Neben dem oben genannten <code>createFromString($html)<\/code> Konstruktor unterst\u00fctzt die Klasse auch <code>createFromFile($path)<\/code> und <code>createEmpty()<\/code><\/p>\n<p>Der neue Parser erkennt semantische HTML5-Tags wie <code>main<\/code>, <code>article<\/code> und <code>section<\/code>, die den meisten von uns inzwischen vertraut sind.<\/p>\n<h3>Multibyte-Trim-Funktionen<\/h3>\n<p>Eine weitere Neuerung in PHP 8.4, die lange auf sich warten lie\u00df, ist die Multibyte-Unterst\u00fctzung in Trim-Funktionen:<\/p>\n<ul>\n<li><code>mb_trim()<\/code><\/li>\n<li><code>mb_ltrim()<\/code><\/li>\n<li><code>mb_rtrim()<\/code><\/li>\n<\/ul>\n<p>Wie die altbew\u00e4hrte PHP-Funktion <code>trim()<\/code> entfernt <code>mb_trim<\/code> Leerzeichen und einige Sonderzeichen wie Zeilenvorsch\u00fcbe von beiden Enden eines Strings, der Multibyte-Zeichen enthalten kann. Die anderen Funktionen schneiden entweder das linke oder das rechte Ende eines Strings ab.<\/p>\n<h2>Verwerfungen in PHP 8.4<\/h2>\n<p>Jede neue Version von PHP bringt eine lange Liste von Funktionen mit sich, von denen einige ziemlich obskur sind und die irgendwann aus der Plattform entfernt werden sollen. Eine der bekanntesten Abk\u00fcndigungen in PHP 8.4 ist die Sitzungsverfolgung ohne Cookie.<\/p>\n<h3>Abschaffung von GET\/POST-Sitzungen<\/h3>\n<p>W\u00e4hrend <a href=\"https:\/\/kinsta.com\/de\/blog\/wordpress-cookies-php-sessions\/\">Cookies<\/a> im Allgemeinen die bevorzugte Methode zur Verfolgung von Benutzersitzungen sind, hat PHP die Fixierung von Sitzungs-ID-Daten in GET\/POST-Parametern unterst\u00fctzt. Um die Sitzungsverfolgung \u00fcber Parameter in URLs zu erm\u00f6glichen, wird die PHP-Einstellung <code>session.use_only_cookies<\/code> deaktiviert und die Einstellung <code>session.use_trans_sid<\/code> kann aktiviert werden.<\/p>\n<p>In PHP 8.4 f\u00fchrt jeder dieser Zust\u00e4nde der Einstellungen zu einer Veralterungswarnung, die in den Logs deiner Website erscheinen kann. Wenn PHP 9 ver\u00f6ffentlicht wird, werden diese Einstellungen nicht mehr verf\u00fcgbar sein.<\/p>\n<h3>Andere Verwerfungen (und Entfernungen) in PHP 8.4<\/h3>\n<p>Im Folgenden findest du eine Liste der Funktionen, die das Team von PHP 8.4 abschaffen will. (Einige enthalten Links zu weiteren Informationen \u00fcber die Funktionen)<\/p>\n<ul>\n<li>Formal veraltete Eigenschaften <code>DOMDocument<\/code> und <code>DOMEntity<\/code> verwerfen.<\/li>\n<li><code>DOMImplementation::getFeature($feature, $version)<\/code> entfernen.<\/li>\n<li>Die veraltete Konstante <code>DOM_PHP_ERR<\/code>.<\/li>\n<li>Das abgelehnte &#8222;S&#8220;-Tag in <code><a href=\"http:\/\/www.php.net\/unserialize\" target=\"_blank\" rel=\"noopener noreferrer\">unserialize<\/a>()<\/code>.<\/li>\n<li>Verwerfung von <code>session.sid_length<\/code> und <code>session.sid_bits_per_character<\/code>.<\/li>\n<li><code>SplFixedArray::__wakeup()<\/code> ablehnen.<\/li>\n<li>Abzulehnen <code><a href=\"http:\/\/www.php.net\/xml_set_object\" target=\"_blank\" rel=\"noopener noreferrer\">xml_set_object()<\/a><\/code> und <code>xml_set_*_handler()<\/code> mit String-Methodennamen.<\/li>\n<li>Verwerfung der \u00dcbergabe von null und false an <code><a href=\"http:\/\/www.php.net\/dba_key_split\" target=\"_blank\" rel=\"noopener noreferrer\">dba_key_split()<\/a><\/code>.<\/li>\n<li>Verwerfung der \u00dcbergabe falscher Datentypen f\u00fcr Optionen an ext\/hash-Funktionen.<\/li>\n<li>Verwerfung der Konstanten <code>SUNFUNCS_RET_STRING<\/code>, <code>SUNFUNCS_RET_DOUBLE<\/code>, <code>SUNFUNCS_RET_TIMESTAMP<\/code>.<\/li>\n<li>Verwerfung des propriet\u00e4ren CSV-Escaping-Mechanismus.<\/li>\n<li>Die Konstante <code>E_STRICT<\/code> wird abgelehnt.<\/li>\n<li><code><a href=\"http:\/\/www.php.net\/strtok\" target=\"_blank\" rel=\"noopener noreferrer\">strtok()<\/a><\/code> abzulehnen.<\/li>\n<li>Die R\u00fcckgabe von Nicht-String-Werten aus einem User Output Handler ist abzulehnen.<\/li>\n<li>Abgelehnt wird die Erzeugung von Ausgaben in einem User Output Handler.<\/li>\n<li><code><a href=\"http:\/\/www.php.net\/file_put_contents\" target=\"_blank\" rel=\"noopener noreferrer\">file_put_contents()<\/a><\/code> mit <code>$data<\/code> als Array ablehnen.<\/li>\n<li><code><a href=\"http:\/\/www.php.net\/mysqli_ping\" target=\"_blank\" rel=\"noopener noreferrer\">mysqli_ping()<\/a><\/code> und <code>mysqli::ping()<\/code> ablehnen.<\/li>\n<li><code>mysqli_refresh()<\/code> verwerfen.<\/li>\n<li><code><a href=\"http:\/\/www.php.net\/mysqli_kill\" target=\"_blank\" rel=\"noopener noreferrer\">mysqli_kill()<\/a><\/code> ablehnen.<\/li>\n<li>Den zweiten Parameter von <code><a href=\"http:\/\/www.php.net\/mysqli_store_result\" target=\"_blank\" rel=\"noopener noreferrer\">mysqli_store_result()<\/a><\/code> verwerfen.<\/li>\n<li><code><a href=\"http:\/\/www.php.net\/lcg_value\" target=\"_blank\" rel=\"noopener noreferrer\">lcg_value()<\/a><\/code>ablehnen.<\/li>\n<li><code><a href=\"http:\/\/www.php.net\/uniqid\" target=\"_blank\" rel=\"noopener noreferrer\">uniqid()<\/a><\/code>ablehnen.<\/li>\n<li><code><a href=\"http:\/\/www.php.net\/md5\" target=\"_blank\" rel=\"noopener noreferrer\">md5()<\/a><\/code>, <code><a href=\"http:\/\/www.php.net\/sha1\" target=\"_blank\" rel=\"noopener noreferrer\">sha1()<\/a><\/code>, <code><a href=\"http:\/\/www.php.net\/md5_file\" target=\"_blank\" rel=\"noopener noreferrer\">md5_file()<\/a><\/code>und <code><a href=\"http:\/\/www.php.net\/sha1_file\" target=\"_blank\" rel=\"noopener noreferrer\">sha1_file()<\/a><\/code> verwerfen.<\/li>\n<li>Die \u00dcbergabe von <code>E_USER_ERROR<\/code> an <code><a href=\"http:\/\/www.php.net\/trigger_error\" target=\"_blank\" rel=\"noopener noreferrer\">trigger_error()<\/a><\/code> verwerfen.<\/li>\n<li>Die Verwendung eines einzelnen Unterstrichs (&#8222;_&#8220;) als Klassenname ablehnen.<\/li>\n<li>Die Konstante <code>SOAP_FUNCTIONS_ALL<\/code> und ihre \u00dcbergabe an <code>SoapServer::addFunction()<\/code> wird abgelehnt.<\/li>\n<\/ul>\n<h2>Zusammenfassung<\/h2>\n<p>PHP 8.4 bringt einige interessante \u00c4nderungen mit sich. Wir freuen uns darauf, diese Version bald f\u00fcr unser j\u00e4hrliches <a href=\"https:\/\/kinsta.com\/de\/blog\/php-benchmarks\/\">PHP-Benchmarking<\/a> &#8211; unsere Tests mit verschiedenen <a href=\"https:\/\/kinsta.com\/de\/blog\/php-frameworks\/\">PHP-basierten Content-Management-Systemen<\/a> &#8211; auf unsere Server zu bringen.<\/p>\n<p>Au\u00dferdem sind wir gespannt, wann <a href=\"https:\/\/kinsta.com\/de\/blog\/arten-von-entwicklern\/\">die Entwicklerinnen und Entwickler<\/a> damit beginnen, einige der neuen Funktionen von PHP 8.4 in ihre Projekte einzubauen, insbesondere die Property Hooks.<\/p>\n<p><em>Welche Funktionen von PHP 8.4 sind deine Favoriten? Teile deine Meinung mit unserer Community in den Kommentaren!<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>K\u00fcrbisgew\u00fcrz liegt in der Luft, also ist es Zeit f\u00fcr eine neue Version von PHP, der serverseitigen Skriptsprache, die unser Lieblings-CMS, WordPress, antreibt. Im Vorfeld der &#8230;<\/p>\n","protected":false},"author":259,"featured_media":71732,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[970,971],"class_list":["post-71731","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-php-funktion","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.4: Hier sind die Neuerungen und Verbesserungen<\/title>\n<meta name=\"description\" content=\"Wenn es Herbst ist, ist es Zeit f\u00fcr eine neue Version von PHP. Hier sind die Highlights der Neuerungen in PHP Version 8.4.\" \/>\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-4\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PHP 8.4: Hier sind die Neuerungen und Verbesserungen\" \/>\n<meta property=\"og:description\" content=\"Wenn es Herbst ist, ist es Zeit f\u00fcr eine neue Version von PHP. Hier sind die Highlights der Neuerungen in PHP Version 8.4.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/de\/blog\/php-8-4\/\" \/>\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=\"2024-11-08T13:34:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-11T14:31:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2024\/11\/what-is-new-in-php-8-4.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\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=\"Wenn es Herbst ist, ist es Zeit f\u00fcr eine neue Version von PHP. Hier sind die Highlights der Neuerungen in PHP Version 8.4.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2024\/11\/what-is-new-in-php-8-4-1024x512.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=\"9\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-4\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/php-8-4\/\"},\"author\":{\"name\":\"Steve Bonisteel\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f\"},\"headline\":\"PHP 8.4: Hier sind die Neuerungen und Verbesserungen\",\"datePublished\":\"2024-11-08T13:34:10+00:00\",\"dateModified\":\"2024-11-11T14:31:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/php-8-4\/\"},\"wordCount\":1269,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/php-8-4\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2024\/11\/what-is-new-in-php-8-4.png\",\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/php-8-4\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/php-8-4\/\",\"url\":\"https:\/\/kinsta.com\/de\/blog\/php-8-4\/\",\"name\":\"PHP 8.4: Hier sind die Neuerungen und Verbesserungen\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/php-8-4\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/php-8-4\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2024\/11\/what-is-new-in-php-8-4.png\",\"datePublished\":\"2024-11-08T13:34:10+00:00\",\"dateModified\":\"2024-11-11T14:31:26+00:00\",\"description\":\"Wenn es Herbst ist, ist es Zeit f\u00fcr eine neue Version von PHP. Hier sind die Highlights der Neuerungen in PHP Version 8.4.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/php-8-4\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/php-8-4\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/php-8-4\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2024\/11\/what-is-new-in-php-8-4.png\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2024\/11\/what-is-new-in-php-8-4.png\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/php-8-4\/#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.4: Hier sind die Neuerungen und Verbesserungen\"}]},{\"@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.4: Hier sind die Neuerungen und Verbesserungen","description":"Wenn es Herbst ist, ist es Zeit f\u00fcr eine neue Version von PHP. Hier sind die Highlights der Neuerungen in PHP Version 8.4.","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-4\/","og_locale":"de_DE","og_type":"article","og_title":"PHP 8.4: Hier sind die Neuerungen und Verbesserungen","og_description":"Wenn es Herbst ist, ist es Zeit f\u00fcr eine neue Version von PHP. Hier sind die Highlights der Neuerungen in PHP Version 8.4.","og_url":"https:\/\/kinsta.com\/de\/blog\/php-8-4\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","article_published_time":"2024-11-08T13:34:10+00:00","article_modified_time":"2024-11-11T14:31:26+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2024\/11\/what-is-new-in-php-8-4.png","type":"image\/png"}],"author":"Steve Bonisteel","twitter_card":"summary_large_image","twitter_description":"Wenn es Herbst ist, ist es Zeit f\u00fcr eine neue Version von PHP. Hier sind die Highlights der Neuerungen in PHP Version 8.4.","twitter_image":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2024\/11\/what-is-new-in-php-8-4-1024x512.png","twitter_creator":"@Kinsta_DE","twitter_site":"@Kinsta_DE","twitter_misc":{"Verfasst von":"Steve Bonisteel","Gesch\u00e4tzte Lesezeit":"9\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/de\/blog\/php-8-4\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/blog\/php-8-4\/"},"author":{"name":"Steve Bonisteel","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f"},"headline":"PHP 8.4: Hier sind die Neuerungen und Verbesserungen","datePublished":"2024-11-08T13:34:10+00:00","dateModified":"2024-11-11T14:31:26+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/php-8-4\/"},"wordCount":1269,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/php-8-4\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2024\/11\/what-is-new-in-php-8-4.png","inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/de\/blog\/php-8-4\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/de\/blog\/php-8-4\/","url":"https:\/\/kinsta.com\/de\/blog\/php-8-4\/","name":"PHP 8.4: Hier sind die Neuerungen und Verbesserungen","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/php-8-4\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/php-8-4\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2024\/11\/what-is-new-in-php-8-4.png","datePublished":"2024-11-08T13:34:10+00:00","dateModified":"2024-11-11T14:31:26+00:00","description":"Wenn es Herbst ist, ist es Zeit f\u00fcr eine neue Version von PHP. Hier sind die Highlights der Neuerungen in PHP Version 8.4.","breadcrumb":{"@id":"https:\/\/kinsta.com\/de\/blog\/php-8-4\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/de\/blog\/php-8-4\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/blog\/php-8-4\/#primaryimage","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2024\/11\/what-is-new-in-php-8-4.png","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2024\/11\/what-is-new-in-php-8-4.png","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/de\/blog\/php-8-4\/#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.4: Hier sind die Neuerungen und Verbesserungen"}]},{"@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\/71731","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=71731"}],"version-history":[{"count":5,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/71731\/revisions"}],"predecessor-version":[{"id":71758,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/71731\/revisions\/71758"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/71731\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/71731\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/71731\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/71731\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/71731\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/71731\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/71731\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/71731\/translations\/es"},{"href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/71731\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media\/71732"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media?parent=71731"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/tags?post=71731"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/topic?post=71731"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}