{"id":61053,"date":"2024-11-08T14:37:55","date_gmt":"2024-11-08T13:37:55","guid":{"rendered":"https:\/\/kinqsta.com\/nl\/?p=61053&#038;preview=true&#038;preview_id=61053"},"modified":"2024-11-14T15:40:21","modified_gmt":"2024-11-14T14:40:21","slug":"php-8-4","status":"publish","type":"post","link":"https:\/\/kinqsta.com\/nl\/blog\/php-8-4\/","title":{"rendered":"PHP 8.4: Dit is wat er nieuw en verbeterd is"},"content":{"rendered":"<p>De feestdagen komen er weer aan, dus is het tijd voor een nieuwe versie van <a href=\"https:\/\/kinqsta.com\/php\">PHP<\/a>, de server-side scripttaal die ons favoriete CMS <a href=\"https:\/\/kinqsta.com\/wordpress\">WordPress<\/a> aandrijft. In de aanloop naar de lancering van versie 8.4 op 21 november hebben de ontwikkelaars van PHP talloze vroege versies van de nieuwe codebase getoond, waaronder een handvol release candidates sinds een bevriezing van de functies in augustus.<\/p>\n<p>Samen met de nieuwe functies, verbeteringen en afschrijvingen die we rond deze tijd van het jaar verwachten, zijn er in 2024 wijzigingen aangebracht in de releasecyclus van PHP, waarbij het einde van de beveiligingsreleases voor alle momenteel ondersteunde versies is gesynchroniseerd met het einde van het jaar in plaats van de GA-verjaardag.<\/p>\n<p>Bovendien werd die ondersteuning met een jaar verlengd, wat betekent dat je PHP 8.4 veilig tot 2028 zou kunnen gebruiken (met twee jaar beveiligingsupdates en bugfixes en twee jaar alleen beveiligingsupdates).<\/p>\n<p>Je staat waarschijnlijk te springen om te weten wat er nieuw is in deze release. Dus laten we snel beginnen!<\/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>Nieuwe features en verbeteringen in PHP 8.4<\/h2>\n<p>De nieuwe features in <a href=\"https:\/\/kinqsta.com\/nl\/blog\/php-8-3\/\">PHP 8.3<\/a> van vorig jaar lijken weinig voor te stellen in vergelijking met sommige toevoegingen in 8.4:<\/p>\n<div><\/div><kinsta-auto-toc list-style=\"disc\" selector=\"h3\" count-number=\"6\" sub-toc=\"true\"><\/kinsta-auto-toc>\n<h3>Property hooks<\/h3>\n<p>Property hooks zorgen voor een geheel nieuwe benadering van het omgaan met &#8220;getters&#8221; en &#8220;setters&#8221; in <a href=\"https:\/\/kinqsta.com\/nl\/blog\/php-oop\/\">PHP objectgeori\u00ebnteerd programmeren<\/a> (OOP), waardoor je de structuur van je klassebestanden kunt vereenvoudigen.<\/p>\n<p>Als voorbeeld van wat property hooks kunnen vervangen, bevat de eenvoudige klasse hieronder de properties <code>$size<\/code> en <code>$flavor<\/code>. Ze hebben <code>private<\/code> zichtbaarheid om ze te beschermen tegen directe toegang buiten het resulterende object. Daarom bemiddelen publieke getter en setter methoden de toegang tot de properties:<\/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>Of misschien heeft je klasse veel properties en in plaats van veel getter- en setter methoden te schrijven, gebruik je PHP&#8217;s <code>_get<\/code> en <code>_set<\/code> magische methoden. Je zou het zelfs kunnen regelen in een ietwat rommelig <code>switch<\/code> statement zoals dit fragment hieronder.<\/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>Welke oplossing je ook kiest, hoe meer properties je in je klasse hebt, hoe verder de code om ze te manipuleren verwijderd is van hun definities bovenaan je klassebestand. Bovendien kunnen sommige implementaties van de magische methoden <code>_get<\/code> en <code>_set<\/code> onverwacht toegang geven tot priv\u00e9 of beschermde properties in je object die je niet van plan was bloot te geven.<\/p>\n<p>De nieuwe property hooks bundelt getter en setter functionaliteit met de properties zelf. In het property hooks voorbeeld hieronder zie je dat de <code>$size<\/code> en <code>$flavor<\/code> properties van de Coffee klasse nu openbaar zijn. Maar we hebben ook wat basic validatie toegevoegd aan de <code>set<\/code> hooks, waardoor ze zich onderscheiden van directe toewijzingen.<\/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>Op dezelfde manier, zoals je hieronder kunt zien, kan een <code>get<\/code> hook functionaliteit verpakken in wat een gewone verwijzing naar een object property lijkt te zijn.<\/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>In tegenstelling tot de PHP magic method, kunnen property hooks worden gebruikt in interfaces en abstracte klassen. Een voorbeeld van een interface:<\/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 zichtbaarheid<\/h3>\n<p>Publiekelijk zichtbare getter- en settermethoden die we eerder hebben bekeken, vertegenwoordigen de traditionele benadering voor toegang tot priv\u00e9 en beschermde properties binnen hun klassen.<\/p>\n<p>Een handige functie van PHP 8.4 is de mogelijkheid om een property verschillende niveaus van zichtbaarheid te geven, afhankelijk van de context waarin deze wordt benaderd. Een property kan dus openbaar zijn als deze wordt gelezen, maar priv\u00e9 of beschermd als deze wordt ingesteld.<\/p>\n<p>Bekijk dit eens:<\/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>Hierboven is de property <code>$flavor<\/code> van de klasse openbaar, behalve in een setting context. Het is al vrij eenvoudig, maar asymmetrische zichtbaarheid heeft zelfs een shorthand:<\/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>Je kunt property hooks en asymmetrische zichtbaarheid in combinatie gebruiken voor een enorme flexibiliteit in het werken met objectproperties van verschillende zichtbaarheid.<\/p>\n<h3><code>new<\/code> chainen zonder haakjes<\/h3>\n<p>Nu we het toch over shorthands hebben, het callen van <code>new<\/code> en chaining methods vereiste vroeger dat de call tussen haakjes werd geplaatst, zoals dit:<\/p>\n<pre><code class=\"language-php\">$coffee = (new Coffee())-&gt;getFlavor()-&gt;getSize();<\/code><\/pre>\n<p>PHP 8.4 staat dit toe:<\/p>\n<pre><code class=\"language-php\">$coffee = new Coffee()-&gt;getFlavor()-&gt;getSize();<\/code><\/pre>\n<p>Het lijkt misschien een kleine verandering, maar door slechts twee haakjes te laten vallen is dit veel gemakkelijker te lezen en te debuggen.<\/p>\n<h3>Nieuwe functies voor het vinden van array-items<\/h3>\n<p>Van de afdeling &#8220;Bedoel je dat we dit niet al konden doen?&#8221;, introduceert PHP 8.4 de functie <code>array_find()<\/code>, die array-elementen kan doorzoeken naar members die voldoen aan voorwaarden die zijn uitgedrukt in een callback-functie. De functie retourneert de waarde van het eerste element dat voldoet aan de callback&#8217;s test.<\/p>\n<p>De nieuwe versie bevat drie andere gerelateerde functies:<\/p>\n<ul>\n<li><code>array_find_key()<\/code>: Zoals <code>array_find()<\/code>, maar de retourwaarde is de sleutel van het overeenkomende element in plaats van de waarde van de elementen zelf.<\/li>\n<li><code>array_all()<\/code>: Geeft <code>true<\/code> terug als <em>elk<\/em> element in de geteste array overeenkomt met de test van de callback.<\/li>\n<li><code>array_any()<\/code>: Geeft <code>true<\/code> terug als <em>ten minste \u00e9\u00e9n<\/em> van de elementen in de array overeenkomt met de test van de callback.<\/li>\n<\/ul>\n<p>Merk op dat de laatste twee functies booleaanse indicatoren teruggeven in plaats van array-keys of inhoud.<\/p>\n<p>Hier zijn enkele snelle voorbeelden:<\/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 is de defacto standaard voor de structuur van moderne webpagina&#8217;s, maar PHP&#8217;s Document Object Model (DOM) parsing technologie was vastgelopen bij HTML 4.01.<\/p>\n<p>In plaats van de bestaande klasse <code>DOMDocument<\/code>, die met de oudere HTML standaarden werkt, te upgraden, komt PHP 8.4 met een nieuwe klasse <code>DomHTMLDocument<\/code> die klaar is voor HTM5.<\/p>\n<p>Je kunt de inhoud van een HTML5 pagina op deze manier importeren:<\/p>\n<pre><code class=\"language-php\">$document = DomHTMLDocument::createFromString($html)<\/code><\/pre>\n<p>Naast de constructor <code>createFromString($html)<\/code> hierboven, ondersteunt de klasse ook <code>createFromFile($path)<\/code> en <code>createEmpty()<\/code><\/p>\n<p>De nieuwe parser herkent semantische HTML5-tags zoals <code>main<\/code>, <code>article<\/code> en <code>section<\/code> die de meesten van ons nu wel kennen.<\/p>\n<h3>Multibyte trim functies<\/h3>\n<p>Een andere toevoeging in PHP 8.4 die lang op zich heeft laten wachten, is multibyte ondersteuning in trim functies:<\/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>Net als de al lang bestaande PHP <code>trim()<\/code> functie, verwijdert <code>mb_trim<\/code> witruimte en sommige speciale tekens, zoals line feeds, van beide uiteinden van een string die multibyte tekens kan bevatten. De andere functies trimmen de linker- of rechteruiteinden van een string.<\/p>\n<h2>Afschrijvingen in PHP 8.4<\/h2>\n<p>Elke release van PHP brengt een waslijst aan functies met zich mee (sommige behoorlijk obscuur) die gemarkeerd zijn voor uiteindelijke verwijdering van het platform. Een meer in het oog springende deprecatie in PHP 8.4 is non-cookie session tracking.<\/p>\n<h3>Afschaffing van GET\/POST sessies<\/h3>\n<p>Hoewel <a href=\"https:\/\/kinqsta.com\/nl\/blog\/wordpress-cookies-php-sessiess\/\">cookies<\/a> over het algemeen de voorkeursmethode zijn voor het bijhouden van gebruikerssessies, heeft PHP het vastleggen van sessie-ID gegevens in GET\/POST parameters ondersteund. Om het bijhouden van sessies via parameters in URL&#8217;s mogelijk te maken, is de PHP-instelling <code>session.use_only_cookies<\/code> uitgeschakeld en kan de instelling <code>session.use_trans_sid<\/code> worden ingeschakeld.<\/p>\n<p>Met PHP 8.4 zullen beide toestanden van de instellingen een afschrijvingswaarschuwing triggeren die kan verschijnen in de logs van je website. Wanneer PHP 9 uitkomt, zullen deze instellingen niet langer beschikbaar zijn.<\/p>\n<h3>Andere afschrijvingen (en verwijderingen) in PHP 8.4<\/h3>\n<p>Hieronder staat een lijst met functionaliteiten die het team achter PHP 8.4 wil verwijderen. (Sommige bevatten links naar meer informatie over de functies&#8230;,<\/p>\n<ul>\n<li>Formeel afgeschreven soft-deprecated <code>DOMDocument<\/code> en <code>DOMEntity<\/code> properties.<\/li>\n<li><code>DOMImplementation::getFeature($feature, $version)<\/code> verwijderd.<\/li>\n<li>Constante <code>DOM_PHP_ERR<\/code> afgeschreven.<\/li>\n<li>De &#8220;S&#8221; tag in <code><a href=\"http:\/\/www.php.net\/unserialize\" target=\"_blank\" rel=\"noopener noreferrer\">unserialize<\/a>()<\/code>.<\/li>\n<li><code>session.sid_length<\/code> en <code>session.sid_bits_per_character<\/code> afgeschreven.<\/li>\n<li><code>SplFixedArray::__wakeup()<\/code> afgeschreven.<\/li>\n<li>Afschaffen <code><a href=\"http:\/\/www.php.net\/xml_set_object\" target=\"_blank\" rel=\"noopener noreferrer\">xml_set_object()<\/a><\/code> en <code>xml_set_*_handler()<\/code> met stringmethode-namen.<\/li>\n<li>Null en false doorgeven aan <code><a href=\"http:\/\/www.php.net\/dba_key_split\" target=\"_blank\" rel=\"noopener noreferrer\">dba_key_split()<\/a><\/code>.<\/li>\n<li>Doorgeven van onjuiste gegevenstypen voor opties aan ext\/hash functies.<\/li>\n<li>Constanten <code>SUNFUNCS_RET_STRING<\/code>, <code>SUNFUNCS_RET_DOUBLE<\/code>, <code>SUNFUNCS_RET_TIMESTAMP<\/code>.<\/li>\n<li>Eigen CSV escaping mechanisme afgeschreven.<\/li>\n<li>Constante <code>E_STRICT<\/code> afgeschreven.<\/li>\n<li>Afschrijving\u00a0 <code><a href=\"http:\/\/www.php.net\/strtok\" target=\"_blank\" rel=\"noopener noreferrer\">strtok()<\/a><\/code>.<\/li>\n<li>Terugsturen van niet-string waarden uit een gebruiker uitvoer handler afgeschreven.<\/li>\n<li>Uitvoer produceren in een gebruikeruitvoerafhandeling afgeschreven.<\/li>\n<li>Afschrijven <code><a href=\"http:\/\/www.php.net\/file_put_contents\" target=\"_blank\" rel=\"noopener noreferrer\">file_put_contents()<\/a><\/code> met <code>$data<\/code> als array.<\/li>\n<li>Afschrijven <code><a href=\"http:\/\/www.php.net\/mysqli_ping\" target=\"_blank\" rel=\"noopener noreferrer\">mysqli_ping()<\/a><\/code> en <code>mysqli::ping()<\/code><\/li>\n<li><code>mysqli_refresh()<\/code> afgeschreven.<\/li>\n<li>Afschrijven <code><a href=\"http:\/\/www.php.net\/mysqli_kill\" target=\"_blank\" rel=\"noopener noreferrer\">mysqli_kill()<\/a><\/code>.<\/li>\n<li>De tweede parameter van <code><a href=\"http:\/\/www.php.net\/mysqli_store_result\" target=\"_blank\" rel=\"noopener noreferrer\">mysqli_store_result()<\/a><\/code>.<\/li>\n<li>Afschrijven <code><a href=\"http:\/\/www.php.net\/lcg_value\" target=\"_blank\" rel=\"noopener noreferrer\">lcg_value()<\/a><\/code>.<\/li>\n<li>Afschrijven <code><a href=\"http:\/\/www.php.net\/uniqid\" target=\"_blank\" rel=\"noopener noreferrer\">uniqid()<\/a><\/code>.<\/li>\n<li>Afschrijven <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>, en <code><a href=\"http:\/\/www.php.net\/sha1_file\" target=\"_blank\" rel=\"noopener noreferrer\">sha1_file()<\/a><\/code>.<\/li>\n<li>Afschrijven doorgeven van <code>E_USER_ERROR<\/code> aan <code><a href=\"http:\/\/www.php.net\/trigger_error\" target=\"_blank\" rel=\"noopener noreferrer\">trigger_error()<\/a><\/code>.<\/li>\n<li>Afschrijven van het gebruik van een enkele underscore (&#8220;_&#8221;) als klassenaam.<\/li>\n<li>De constante <code>SOAP_FUNCTIONS_ALL<\/code> afgeschreven en doorgeven aan <code>SoapServer::addFunction()<\/code>.<\/li>\n<\/ul>\n<h2>Samenvatting<\/h2>\n<p>PHP 8.4 bevat een aantal interessante veranderingen. We zijn enthousiast om deze release binnenkort op onze servers te zetten voor onze jaarlijkse <a href=\"https:\/\/kinqsta.com\/nl\/blog\/php-benchmarks\/\">PHP benchmarking<\/a> &#8211; onze tests met verschillende <a href=\"https:\/\/kinqsta.com\/nl\/blog\/php-frameworks\/\">op PHP gebaseerde content management systemen<\/a>.<\/p>\n<p>We zijn ook benieuwd wanneer <a href=\"https:\/\/kinqsta.com\/nl\/blog\/soorten-developers\/\">ontwikkelaars<\/a> de nieuwe functies van PHP 8.4 in hun projecten gaan gebruiken, met name property hooks.<\/p>\n<p><em>Welke PHP 8.4 functies zijn jouw favorieten? Deel je gedachten met onze community in de comments!<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>De feestdagen komen er weer aan, dus is het tijd voor een nieuwe versie van PHP, de server-side scripttaal die ons favoriete CMS WordPress aandrijft. In &#8230;<\/p>\n","protected":false},"author":259,"featured_media":61054,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[865,867],"class_list":["post-61053","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-php-functie","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: Dit is wat er nieuw en verbeterd is<\/title>\n<meta name=\"description\" content=\"Als het herfst is, is het tijd voor een nieuwe release van PHP. Hier zijn de hoogtepunten van wat er nieuw is voor jou in PHP versie 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:\/\/kinqsta.com\/nl\/blog\/php-8-4\/\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PHP 8.4: Dit is wat er nieuw en verbeterd is\" \/>\n<meta property=\"og:description\" content=\"Als het herfst is, is het tijd voor een nieuwe release van PHP. Hier zijn de hoogtepunten van wat er nieuw is voor jou in PHP versie 8.4.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinqsta.com\/nl\/blog\/php-8-4\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-08T13:37:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-14T14:40:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinqsta.com\/nl\/wp-content\/uploads\/sites\/7\/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=\"Als het herfst is, is het tijd voor een nieuwe release van PHP. Hier zijn de hoogtepunten van wat er nieuw is voor jou in PHP versie 8.4.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinqsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/11\/what-is-new-in-php-8-4-1024x512.png\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_NL\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_NL\" \/>\n<meta name=\"twitter:label1\" content=\"Geschreven door\" \/>\n\t<meta name=\"twitter:data1\" content=\"Steve Bonisteel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinqsta.com\/nl\/blog\/php-8-4\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/nl\/blog\/php-8-4\/\"},\"author\":{\"name\":\"Steve Bonisteel\",\"@id\":\"https:\/\/kinqsta.com\/nl\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f\"},\"headline\":\"PHP 8.4: Dit is wat er nieuw en verbeterd is\",\"datePublished\":\"2024-11-08T13:37:55+00:00\",\"dateModified\":\"2024-11-14T14:40:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/nl\/blog\/php-8-4\/\"},\"wordCount\":1250,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/nl\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/nl\/blog\/php-8-4\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/11\/what-is-new-in-php-8-4.png\",\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinqsta.com\/nl\/blog\/php-8-4\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinqsta.com\/nl\/blog\/php-8-4\/\",\"url\":\"https:\/\/kinqsta.com\/nl\/blog\/php-8-4\/\",\"name\":\"PHP 8.4: Dit is wat er nieuw en verbeterd is\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/nl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/nl\/blog\/php-8-4\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/nl\/blog\/php-8-4\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/11\/what-is-new-in-php-8-4.png\",\"datePublished\":\"2024-11-08T13:37:55+00:00\",\"dateModified\":\"2024-11-14T14:40:21+00:00\",\"description\":\"Als het herfst is, is het tijd voor een nieuwe release van PHP. Hier zijn de hoogtepunten van wat er nieuw is voor jou in PHP versie 8.4.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinqsta.com\/nl\/blog\/php-8-4\/#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinqsta.com\/nl\/blog\/php-8-4\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinqsta.com\/nl\/blog\/php-8-4\/#primaryimage\",\"url\":\"https:\/\/kinqsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/11\/what-is-new-in-php-8-4.png\",\"contentUrl\":\"https:\/\/kinqsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/11\/what-is-new-in-php-8-4.png\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinqsta.com\/nl\/blog\/php-8-4\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinqsta.com\/nl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PHP updates\",\"item\":\"https:\/\/kinqsta.com\/nl\/onderwerpen\/php-updates\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"PHP 8.4: Dit is wat er nieuw en verbeterd is\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinqsta.com\/nl\/#website\",\"url\":\"https:\/\/kinqsta.com\/nl\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Snelle, veilige, premium hostingoplossingen\",\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/nl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinqsta.com\/nl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinqsta.com\/nl\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinqsta.com\/nl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinqsta.com\/nl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinqsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinqsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/nl\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\",\"https:\/\/x.com\/Kinsta_NL\",\"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:\/\/kinqsta.com\/nl\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f\",\"name\":\"Steve Bonisteel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinqsta.com\/nl\/#\/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:\/\/kinqsta.com\/nl\/blog\/author\/stevebonisteel\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"PHP 8.4: Dit is wat er nieuw en verbeterd is","description":"Als het herfst is, is het tijd voor een nieuwe release van PHP. Hier zijn de hoogtepunten van wat er nieuw is voor jou in PHP versie 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:\/\/kinqsta.com\/nl\/blog\/php-8-4\/","og_locale":"nl_NL","og_type":"article","og_title":"PHP 8.4: Dit is wat er nieuw en verbeterd is","og_description":"Als het herfst is, is het tijd voor een nieuwe release van PHP. Hier zijn de hoogtepunten van wat er nieuw is voor jou in PHP versie 8.4.","og_url":"https:\/\/kinqsta.com\/nl\/blog\/php-8-4\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","article_published_time":"2024-11-08T13:37:55+00:00","article_modified_time":"2024-11-14T14:40:21+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinqsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/11\/what-is-new-in-php-8-4.png","type":"image\/png"}],"author":"Steve Bonisteel","twitter_card":"summary_large_image","twitter_description":"Als het herfst is, is het tijd voor een nieuwe release van PHP. Hier zijn de hoogtepunten van wat er nieuw is voor jou in PHP versie 8.4.","twitter_image":"https:\/\/kinqsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/11\/what-is-new-in-php-8-4-1024x512.png","twitter_creator":"@Kinsta_NL","twitter_site":"@Kinsta_NL","twitter_misc":{"Geschreven door":"Steve Bonisteel","Geschatte leestijd":"9 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinqsta.com\/nl\/blog\/php-8-4\/#article","isPartOf":{"@id":"https:\/\/kinqsta.com\/nl\/blog\/php-8-4\/"},"author":{"name":"Steve Bonisteel","@id":"https:\/\/kinqsta.com\/nl\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f"},"headline":"PHP 8.4: Dit is wat er nieuw en verbeterd is","datePublished":"2024-11-08T13:37:55+00:00","dateModified":"2024-11-14T14:40:21+00:00","mainEntityOfPage":{"@id":"https:\/\/kinqsta.com\/nl\/blog\/php-8-4\/"},"wordCount":1250,"commentCount":0,"publisher":{"@id":"https:\/\/kinqsta.com\/nl\/#organization"},"image":{"@id":"https:\/\/kinqsta.com\/nl\/blog\/php-8-4\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/11\/what-is-new-in-php-8-4.png","inLanguage":"nl-NL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinqsta.com\/nl\/blog\/php-8-4\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinqsta.com\/nl\/blog\/php-8-4\/","url":"https:\/\/kinqsta.com\/nl\/blog\/php-8-4\/","name":"PHP 8.4: Dit is wat er nieuw en verbeterd is","isPartOf":{"@id":"https:\/\/kinqsta.com\/nl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinqsta.com\/nl\/blog\/php-8-4\/#primaryimage"},"image":{"@id":"https:\/\/kinqsta.com\/nl\/blog\/php-8-4\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/11\/what-is-new-in-php-8-4.png","datePublished":"2024-11-08T13:37:55+00:00","dateModified":"2024-11-14T14:40:21+00:00","description":"Als het herfst is, is het tijd voor een nieuwe release van PHP. Hier zijn de hoogtepunten van wat er nieuw is voor jou in PHP versie 8.4.","breadcrumb":{"@id":"https:\/\/kinqsta.com\/nl\/blog\/php-8-4\/#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinqsta.com\/nl\/blog\/php-8-4\/"]}]},{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinqsta.com\/nl\/blog\/php-8-4\/#primaryimage","url":"https:\/\/kinqsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/11\/what-is-new-in-php-8-4.png","contentUrl":"https:\/\/kinqsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/11\/what-is-new-in-php-8-4.png","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinqsta.com\/nl\/blog\/php-8-4\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinqsta.com\/nl\/"},{"@type":"ListItem","position":2,"name":"PHP updates","item":"https:\/\/kinqsta.com\/nl\/onderwerpen\/php-updates\/"},{"@type":"ListItem","position":3,"name":"PHP 8.4: Dit is wat er nieuw en verbeterd is"}]},{"@type":"WebSite","@id":"https:\/\/kinqsta.com\/nl\/#website","url":"https:\/\/kinqsta.com\/nl\/","name":"Kinsta\u00ae","description":"Snelle, veilige, premium hostingoplossingen","publisher":{"@id":"https:\/\/kinqsta.com\/nl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinqsta.com\/nl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"},{"@type":"Organization","@id":"https:\/\/kinqsta.com\/nl\/#organization","name":"Kinsta","url":"https:\/\/kinqsta.com\/nl\/","logo":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinqsta.com\/nl\/#\/schema\/logo\/image\/","url":"https:\/\/kinqsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinqsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinqsta.com\/nl\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","https:\/\/x.com\/Kinsta_NL","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:\/\/kinqsta.com\/nl\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f","name":"Steve Bonisteel","image":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinqsta.com\/nl\/#\/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:\/\/kinqsta.com\/nl\/blog\/author\/stevebonisteel\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinqsta.com\/nl\/wp-json\/wp\/v2\/posts\/61053","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinqsta.com\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinqsta.com\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/nl\/wp-json\/wp\/v2\/users\/259"}],"replies":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/nl\/wp-json\/wp\/v2\/comments?post=61053"}],"version-history":[{"count":4,"href":"https:\/\/kinqsta.com\/nl\/wp-json\/wp\/v2\/posts\/61053\/revisions"}],"predecessor-version":[{"id":61112,"href":"https:\/\/kinqsta.com\/nl\/wp-json\/wp\/v2\/posts\/61053\/revisions\/61112"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinqsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/61053\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinqsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/61053\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinqsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/61053\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinqsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/61053\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinqsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/61053\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinqsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/61053\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinqsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/61053\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinqsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/61053\/translations\/es"},{"href":"https:\/\/kinqsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/61053\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/nl\/wp-json\/wp\/v2\/media\/61054"}],"wp:attachment":[{"href":"https:\/\/kinqsta.com\/nl\/wp-json\/wp\/v2\/media?parent=61053"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinqsta.com\/nl\/wp-json\/wp\/v2\/tags?post=61053"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinqsta.com\/nl\/wp-json\/wp\/v2\/topic?post=61053"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}