{"id":42601,"date":"2023-04-03T18:20:35","date_gmt":"2023-04-03T16:20:35","guid":{"rendered":"https:\/\/kinsta.com\/nl\/?p=42601"},"modified":"2023-06-16T16:47:55","modified_gmt":"2023-06-16T14:47:55","slug":"overstappen-naar-php-8","status":"publish","type":"post","link":"https:\/\/kinsta.com\/nl\/blog\/overstappen-naar-php-8\/","title":{"rendered":"Overstappen naar PHP 8.x in vier stappen &#8211; Een interview met Juliette Reinders Folmer"},"content":{"rendered":"<p>Het upgraden van een WordPress site, plugin of thema naar een nieuwe versie van PHP is een taak die eens in de zoveel tijd terugkomt. Maar hoe doe je dit zo effici\u00ebnt mogelijk? Hoe weet je dat je niets over het hoofd ziet? Is er een stappenplan voor?<\/p>\n<p>In dit artikel behandelen we deze vragen (en meer) en bekijken we wat er komt kijken bij een soepele overgang naar PHP 8.x voor je WordPress site, plugin of thema, inclusief een stappenplan.<\/p>\n<p>We doen dit op basis van een interview dat we hielden met PHP expert Juliette Reinders Folmer. Zij wijdt het grootste deel van haar dagelijks leven aan programmeren en alles daaromheen, waarbij ze zich vooral richt op open-source projecten, waaronder WordPress.<\/p>\n<p>Klaar om ook jouw overstap soepel te laten verlopen? Benieuwd naar ons stappenplan? Lees dan snel verder!<\/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>PHP 8.x &#8211; Dit is er veranderd<\/h2>\n<p>Voor een overzicht van de veranderingen raden we de onderstaande artikelen aan:<\/p>\n<ul>\n<li>De release notes van <a href=\"https:\/\/www.php.net\/releases\/8.0\/en.php\" target=\"_blank\" rel=\"noopener noreferrer\">PHP 8.0<\/a>\u00a0(<a href=\"https:\/\/www.php.net\/releases\/8.0\/nl.php\" target=\"_blank\" rel=\"noopener noreferrer\">In het Nederlands<\/a>) en\u00a0<a href=\"https:\/\/www.php.net\/releases\/8.1\/en.php\" target=\"_blank\" rel=\"noopener noreferrer\">PHP 8.1<\/a>.<\/li>\n<li>Migratiegids voor <a href=\"https:\/\/www.php.net\/manual\/en\/migration80.php\" target=\"_blank\" rel=\"noopener noreferrer\">PHP 8.0<\/a> en <a href=\"https:\/\/www.php.net\/manual\/en\/migration81.php\" target=\"_blank\" rel=\"noopener noreferrer\">PHP 8.1<\/a><\/li>\n<li><a href=\"https:\/\/make.wordpress.org\/core\/2020\/11\/23\/wordpress-and-php-8-0\/\" target=\"_blank\" rel=\"noopener noreferrer\">WordPress en PHP 8.0<\/a> en <a href=\"https:\/\/make.wordpress.org\/core\/2022\/01\/10\/wordpress-5-9-and-php-8-0-8-1\/\" target=\"_blank\" rel=\"noopener noreferrer\">de huidige status<\/a><\/li>\n<li><a href=\"https:\/\/kinsta.com\/nl\/blog\/php-8\/\">Wat is er nieuw in PHP 8.0<\/a> en <a href=\"https:\/\/kinsta.com\/nl\/blog\/php-8-1\/\">PHP 8.1<\/a><\/li>\n<li><a href=\"https:\/\/kinsta.com\/nl\/blog\/php-8-2\/\">Wat is nieuw in PHP 8.2<\/a> en <a href=\"https:\/\/www.php.net\/manual\/en\/migration82.php\" target=\"_blank\" rel=\"noopener noreferrer\">PHP 8.2 migratiegids<\/a>.<\/li>\n<\/ul>\n<p>Na het lezen van deze artikelen ben je volledig op de hoogte van wat er veranderd is in PHP 8.x en wat je moet doen om je PHP projecten probleemloos te laten draaien.<\/p>\n<p>Als je niet zeker weet wat de beste manier is om te beginnen, geen probleem. In het gesprek met Juliette hebben we dit uitgebreid besproken, en we zullen je in dit artikel zo volledig mogelijk uitleggen hoe je kunt overstappen op PHP 8.x.<\/p>\n<p>Ook zullen we in informatieve kaders uitleggen hoe je verschillende handelingen kunt verrichten in <a href=\"https:\/\/kinsta.com\/nl\/mykinsta\/\">MyKinsta<\/a>, ons eigen controlepaneel voor al je WordPress sites, applicaties en databases.<\/p>\n<h2>Overstappen naar PHP 8.x: Zo begin je<\/h2>\n<p>Overstappen op PHP 8.x klinkt eenvoudig, en technisch gezien is het dat ook. Bij veel hosts kun je in het beheerderspaneel aangeven welke versie van PHP je voor je website wilt gebruiken. Bij Kinsta kun je met een enkele klik in het MyKinsta dashboard <a href=\"https:\/\/kinsta.com\/nl\/changelog\/php-8\/\">van PHP versie wisselen<\/a>.<\/p>\n<p>Maar voordat je dat doet, zijn er een paar dingen waar je zeker van moet zijn. Afhankelijk van je kennis- en ervaringsniveau raden we het volgende aan:<\/p>\n<ul>\n<li>Als je je eigen WordPress site hebt gebouwd met standaard thema&#8217;s en plugins, zonder veel kennis te hebben van PHP, huur dan een developers of bureau in om te onderzoeken of je site geschikt is om te draaien op PHP 8.x. Ben je op zoek naar een derde partij die je hiermee kan helpen? Kijk dan op <a href=\"https:\/\/kinsta.com\/nl\/partners\/\">onze Partners pagina<\/a> waarop verschillende vertrouwde bedrijven staan die je kunnen helpen.<\/li>\n<li>Als je WordPress site is gebouwd door een externe partij, een developer of een bureau, neem dan contact met hen op om te vragen of je site op PHP 8.x kan draaien.<\/li>\n<li>Als je je WordPress site zelf hebt gebouwd &#8211; met bijvoorbeeld je eigen gebouwde thema of zelf ontwikkelde plugins &#8211; dan hebben we hieronder een stappenplan voor je.<\/li>\n<\/ul>\n<p>Als je site in een van de eerste twee categorie\u00ebn valt, nodigen we je zeker uit om de rest van het artikel door te lezen, maar we raden je niet aan om zelf te beginnen met het testen van je site op compatibiliteit met PHP 8.1. Laat dat over aan de professionals.<\/p>\n<p>Wat je ook kiest, we raden je aan niet zomaar je live site over te zetten naar PHP 8 en &#8220;te kijken of het werkt.&#8221; Ben je nieuwsgierig naar hoe je site eruit zal zien, en kun je niet wachten om hem te zien draaien op PHP 8? Begin dan met testen binnen een testomgeving. Bij een goede host kun je gemakkelijk <a href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-testwebsite\/\">een testomgeving<\/a> opzetten.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Een testomgeving maken met Kinsta is eenvoudig.<\/p>\n<p>Klik in <a href=\"https:\/\/my.kinsta.com\/?lang=nl?lang=en\">MyKinsta<\/a> op <strong>WordPress sites <\/strong>in de linker navigatie. Je ziet nu een lijst van je WordPress sites\/installaties. Kies de site waarvoor je een testomgeving wilt maken, klik op de <strong>Omgevingskiezer <\/strong>naast de sitenaam en kies voor <strong>Maak een nieuwe omgeving <\/strong>in het dropdown menu. In de modal\/pop-up <strong>Maak een nieuwe omgeving <\/strong>die verschijnt, geef je je omgeving een naam, kies je <strong>Standaard omgeving <\/strong>en klik je op de knop <strong>Maak een nieuwe omgeving<\/strong>.<\/p>\n<p>Vervolgens wordt je gevraagd de omgeving te kiezen die je wilt maken. Kies optie 1, <strong>Een bestaande omgeving klonen<\/strong>. Klik nu op de knop <strong>Maak een nieuwe omgeving<\/strong>, waarna het aanmaken van de nieuwe omgeving begint. Dit kan enkele minuten duren. Als het proces voltooid is, kun je de nieuwe standaard testomgeving kiezen uit de <strong>Omgevingskiezer <\/strong>dropdown naast de sitenaam.<\/p>\n<p>Meer informatie over het <a href=\"https:\/\/kinsta.com\/nl\/docs\/wordpress-hosting\/testomgeving\/\">aanmaken van een testomgeving<\/a>.<\/p>\n<\/aside>\n\n<figure id=\"attachment_147928\" aria-describedby=\"caption-attachment-147928\" style=\"width: 2864px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-147928 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/mykinsta-create-new-environment-eng0.png\" alt=\"MyKinsta - Een nieuwe omgeving maken\" width=\"2864\" height=\"968\"><figcaption id=\"caption-attachment-147928\" class=\"wp-caption-text\">MyKinsta &#8211; Een nieuwe omgeving maken<\/figcaption><\/figure>\n<p>In de testomgeving kun je PHP 8.x activeren en kijken of deze update goed werkt met je site. Het is ook mogelijk om met een lokale kopie van je site te werken. Met onze <a href=\"https:\/\/kinsta.com\/nl\/devkinsta\/\">gratis DevKinsta ontwikkeltool<\/a> kun je gemakkelijk je site importeren vanuit het <a href=\"https:\/\/kinsta.com\/nl\/mykinsta\/\">MyKinsta dashboard<\/a>, waarna je de PHPversie kunt wijzigen in 8.0 of 8.1.<\/p>\n<p>Als je in de staging-omgeving geen problemen ziet, hoeft dat niet te betekenen dat er eigenlijk geen problemen zijn. Het stappenplan hieronder vertelt je waarom.<\/p>\n<h2>PHP 8.x compatibiliteit testen: Het stappenplan<\/h2>\n<p>Testen: het sleutelwoord voor goede software. Ook voor WordPress websites en hun componenten, zoals thema&#8217;s, plugins en de WordPress kern, is testen het middel om ervoor te zorgen dat er geen dingen gebeuren die je niet wilt.<\/p>\n<p>Een softwareontwikkelingsproject bestaat voor een groot deel uit testen. In dit artikel kijken we specifiek naar de tests die je kunnen helpen om de overgang naar PHP 8.x soepel te laten verlopen. In ons artikel over DevOps Tools vind je een sectie met een <a href=\"https:\/\/kinsta.com\/nl\/blog\/devops-tools\/#devops-testtools\">verzameling tools<\/a> die je kunt gebruiken.<\/p>\n<p>De volgende soorten tests worden in deze blogpost besproken:<\/p>\n<div><\/div><kinsta-auto-toc list-style=\"decimal\" selector=\"h3\" count-number=\"-1\" sub-toc=\"true\"><\/kinsta-auto-toc>\n<p>Laten we de verschillende soorten tests die we kunnen uitvoeren nader bekijken.<\/p>\n<h3>Statische analyse (of statisch testen)<\/h3>\n<p>De eerste stap die je als PHP developer ntwikkelaar kunt nemen is het uitvoeren van een statische analyse van je code met verschillende tools. Statische analyse is het proces van het analyseren van software zonder de code uit te voeren. Met statische analyse is het mogelijk om fouten op te sporen, problemen met PHP 8.x compatibiliteit op te sporen, coderingsnormen af te dwingen (bijvoorbeeld de <a href=\"https:\/\/make.wordpress.org\/core\/handbook\/best-practices\/coding-standards\/\" target=\"_blank\" rel=\"noopener noreferrer\">WordPress Coding Standards<\/a>), en zelfs het aanpassen en opschonen van de code is mogelijk.<\/p>\n<h4>Tools voor statische analyse<\/h4>\n<p>Je kunt een statische analyse uitvoeren met verschillende tools, zoals:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/PHPCompatibility\/PHPCompatibility\" target=\"_blank\" rel=\"noopener noreferrer\">PHPCompatibility<\/a><\/li>\n<li><a href=\"https:\/\/psalm.dev\/\" target=\"_blank\" rel=\"noopener noreferrer\">Psalm<\/a><\/li>\n<li><a href=\"https:\/\/phpstan.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">PHPStan<\/a><\/li>\n<\/ul>\n<p>Op het moment van schrijven worden niet alle PHP 8.1 checks ondersteund in de nieuwste PHPCompatibility release. PHP 8.1 checks kunnen in de ontwikkelingsrelease zitten, dus zorg ervoor dat je die (voorlopig) gebruikt als je PHPCompatibility gebruikt om je project te analyseren en te zien welke fouten\/aanbevelingen er zijn.<\/p>\n<p>PHP 8.1 checks worden binnenkort uitgebracht in een nieuwe <em>major <\/em>versie. Als je hiervan op de hoogte wilt blijven, en je hebt een GitHub account, open dan <a href=\"https:\/\/github.com\/PHPCompatibility\/PHPCompatibility\" target=\"_blank\" rel=\"noopener noreferrer\">de GitHub repository van PHPCompatibility<\/a> en navigeer naar <strong>Watch<\/strong> -&gt; <strong>Custom<\/strong> -&gt; <strong>Releases<\/strong>, waar je kunt kiezen voor een melding als er een nieuwe versie wordt uitgebracht.<\/p>\n<p>PHPCompatibility, dat alleen compatibiliteit test voor een bepaalde versie (of reeks versies) van PHP, is eenvoudig in te stellen. Je krijgt de beste resultaten als je binnen PHPCompatibility een <a href=\"https:\/\/github.com\/PHPCompatibility\/PHPCompatibility#sniffing-your-code-for-compatibility-with-specific-php-versions\" target=\"_blank\" rel=\"noopener noreferrer\">testVersion<\/a>\u00a0uitvoert &#8211; bijvoorbeeld 8.0+ (8.0 en hoger).<\/p>\n<p>Je moet letten op afgeschreven of verwijderde functies, gewijzigde standaardwaarden van functieparameters, of je concat moet gebruiken zonder haakjes, of je match moet gebruiken als functienaam (want die is gereserveerd sinds PHP 8.0), enz.<\/p>\n<figure id=\"attachment_147872\" aria-describedby=\"caption-attachment-147872\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-147872 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/PHPCompatibility-1024x619-1.png\" alt=\"Screenshot van de PHPCompatibility GitHub pagina\" width=\"1024\" height=\"619\"><figcaption id=\"caption-attachment-147872\" class=\"wp-caption-text\">Screenshot van de PHPCompatibility GitHub pagina<\/figcaption><\/figure>\n<p>Psalm en PHPStan zijn goede toevoegingen en kunnen je helpen door extra controles uit te voeren met betrekking tot variable types. Het nadeel van deze tools is dat het veel configuratie vergt om rapporten te krijgen over PHP 8.0 en 8.1. Zelfs als ze succesvol zijn, kun je veel false positives verwachten. False positives zijn meldingen die ten onrechte worden gegeven, veroorzaakt door de beperkingen van statische analyse.<\/p>\n<p>Er is gedegen kennis nodig om de resultaten van deze twee tools goed te interpreteren, maar die kennis kan je helpen om extra incompatibiliteiten op te sporen die PHPCompatibility niet kan vinden. Bekijk de documentatie voor <a href=\"https:\/\/psalm.dev\/docs\/\" target=\"_blank\" rel=\"noopener noreferrer\">Psalm<\/a> en <a href=\"https:\/\/phpstan.org\/user-guide\/getting-started\" target=\"_blank\" rel=\"noopener noreferrer\">PHPStan<\/a> als je er meer over wilt weten.<\/p>\n<p>Samenvatting:<\/p>\n<ul>\n<li>Voer een statische analyse uit met PHPCompatibility, Psalm, PHPStan<\/li>\n<li>Los alle legitieme problemen op<\/li>\n<\/ul>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-\">\n        <p><strong>Pro-tip van Juliette<\/strong><\/p>\n<p>Zet tijdens het testen in je php.ini \/ wp-config.php bestand de error_reporting op -1. Dit komt omdat E_ALL, afhankelijk van de PHP versie, niet alles bevat.<\/p>\n<p>Pas vanaf 8.0 bevat\u00a0 E_ALL ook echt alles. Zet ook log_errors aan om meldingen in een logbestand terug te kijken.<\/p>\n<p>Zet het loggen van fouten niet aan op een live site, want dit kan voor vertragingen zorgen, omdat het gegevens naar een bestand moet schrijven. Doe dit dus in een testomgeving en zorg dat je weet wat er gebeurt\/mislukt.<\/p>\n<p>Om je logs in MyKinsta te bekijken, ga je naar de website en klik je in het menu op <strong>Logs<\/strong>. Hier kun je de bestanden error.log en access.log bekijken en alle logvermeldingen bestuderen.<\/p>\n<p><a href=\"https:\/\/kinsta.com\/nl\/docs\/wordpress-hosting\/wordpress-problemen-oplossen\/serverlogs-bekijken\/\">Klik hier voor meer informatie over het bekijken van logs in MyKinsta<\/a>.<\/p>\n<\/aside>\n\n<figure id=\"attachment_147929\" aria-describedby=\"caption-attachment-147929\" style=\"width: 2806px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-147929 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/mykinsta-access-logs-eng0.png\" alt=\"MyKinsta - logbestanden bekijken\" width=\"2806\" height=\"1746\"><figcaption id=\"caption-attachment-147929\" class=\"wp-caption-text\">MyKinsta &#8211; logbestanden bekijken<\/figcaption><\/figure>\n<h3>Unittesten<\/h3>\n<p>De volgende stap in het proces is unittesten. Unittesten is een methode om stukken code afzonderlijk te testen. Bij unittesten worden voor elke eenheid specifieke gerichte tests ontwikkeld. Daarbij worden verschillende scenario&#8217;s doorlopen. Bij voorkeur wordt elk scenario apart van de andere getest, zodat de tests onafhankelijk van elkaar zijn.<\/p>\n<p>Het hebben van unittests alleen is natuurlijk niet voldoende. Ze moeten ook uitgevoerd worden. Unittesten kunnen het beste worden geautomatiseerd met behulp van CI (continuous integration) tooling zoals <a href=\"https:\/\/www.jenkins.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Jenkins<\/a>, <a href=\"https:\/\/github.com\/features\/actions\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub Actions<\/a>, of <a href=\"https:\/\/www.travis-ci.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Travis<\/a>.<\/p>\n<figure id=\"attachment_147875\" aria-describedby=\"caption-attachment-147875\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-147875 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/github-actions-1024x687-1.png\" alt=\"Een voorbeeld van GitHub Actions\" width=\"1024\" height=\"687\"><figcaption id=\"caption-attachment-147875\" class=\"wp-caption-text\">Een voorbeeld van GitHub Actions<\/figcaption><\/figure>\n<h4>Ondersteuning van meerdere versies van PHP<\/h4>\n<p>Als je als pluginbouwer meerdere PHP versies wilt ondersteunen, zorg er dan voor dat de tests in CI worden uitgevoerd tegen alle PHP versies die je ondersteunt.<\/p>\n<p>Natuurlijk kun je ook alleen nieuwere versies ondersteunen, de keuze is geheel aan jou.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-\">\n        <p><strong>Pro-tip van Juliette<\/strong><\/p>\n<p>Op GitHub Actions kun je al testen tegen PHP 8.2, waardoor je tijdig waarschuwingen krijgt over nieuwe veranderingen in PHP waar je rekening mee moet houden.<\/p>\n<p>Testen met meerdere versies van PHP vereist dat je meerdere PHPUnit versies gebruikt, afhankelijk van de PHP versie. Omdat PHPUnit in de loop der jaren verschillende veranderingen heeft doorgevoerd die van invloed zijn op hoe tests worden geschreven, kan dit onderdeel lastig zijn.<\/p>\n<p>Om dit te omzeilen kun je de <a href=\"https:\/\/github.com\/Yoast\/PHPUnit-Polyfills\" target=\"_blank\" rel=\"noopener noreferrer\">PHPUnit Polyfills<\/a> gebruiken (geschreven door Juliette en gesponsord door <a href=\"https:\/\/kinsta.com\/partners\/yoast\/\">Yoast<\/a>). Hiermee kun je tests schrijven die officieel niet worden ondersteund voor PHPUnit 9 (en dus kunnen draaien op PHP 8.x). De Polyfills zorgen er dan voor dat je tests werken in PHPUnit 4.x t\/m 9.x en met PHP 5.4 t\/m PHP 8.1 (op moment van schrijven).<\/p>\n<\/aside>\n\n<p>Nu je de tests hebt draaien, is de volgende stap om ervoor te zorgen dat de problemen die in de tests zijn gevonden worden opgelost.<\/p>\n<h4>Code coverage<\/h4>\n<p>Het uitvoeren van deze tests is de meest betrouwbare manier om cross-versie incompatibiliteiten te vinden.<\/p>\n<p>Let daarbij op de <em>code coverage <\/em>van je tests:<\/p>\n<ul>\n<li>Stel, je hebt een functie A en hebt daar een test voor geschreven, en functie A callt functies B, C en D als onderdeel van de logica in de functie.<\/li>\n<li>De test voor functie A is geschreven om de logica van functie A te testen, maar zal tijdens het testen ook de functies B, C en D callen. Voor functies B, C, en D test je dan meestal alleen het &#8220;happy path&#8221; &#8211; de situatie waarin alles goed gaat &#8211; en dus zijn die functies ook nog niet volledig getest, hoewel (een deel van) de code in die functies wordt uitgevoerd tijdens het testen van functie A.<\/li>\n<li>Geef voor elk van je tests aan welke code specifiek wordt getest. Dit doe je door elke test een <a href=\"https:\/\/phpunit.readthedocs.io\/en\/9.5\/code-coverage-analysis.html#specifying-covered-code-parts\" target=\"_blank\" rel=\"noopener noreferrer\">@covers<\/a> te geven. Op die manier worden B, C en D niet &#8220;meegeteld&#8221; in de berekening van de codedekking, waardoor je kunt zien welk deel van je code door tests wordt gedekt.<\/li>\n<\/ul>\n<p>Vaak schrijven en testen developers &#8211; soms zelfs onbewust &#8211; voor het &#8220;happy path.&#8221; In deze gevallen is het ook nodig om te testen wat er gebeurt als onverwachte gegevens aan een functie worden doorgegeven. <strong>Testen met alleen verwachte waarden\/types is niet voldoende<\/strong>.<\/p>\n\n<p>Het tweede deel van bovenstaand citaat wordt vaak vergeten, terwijl het misschien nog wel belangrijker is dan het eerste deel. Wat gebeurt er als je een verkeerd type doorgeeft? Krijg je dan een foutmelding? Of wordt de variabele gecast met de functie en gaat hij gewoon door? En wat als er een onverwachte waarde aan de functie wordt doorgegeven?<\/p>\n<p>Zorg ervoor dat je je functies test met onverwachte variabelen, typen en waarden. Alleen dan kun je vertrouwen op je tests om problemen te vinden die een nieuwe PHP versie kan veroorzaken.<\/p>\n<h4>PHP wordt strenger<\/h4>\n<p>PHP wordt steeds preciezer (strikter) in hoe het omgaat met &#8220;types&#8221; voor PHP&#8217;s eigen functies, en met zaken als dynamische properties. Deze veranderingen zijn over het algemeen bedoeld om developers te helpen foutloze code te leveren (nou ja, code met minder fouten). Maar dit kan een behoorlijke upgrade-hindernis vormen voor reeds bestaande code die is geschreven op basis van de &#8220;oude&#8221; grondbeginselen van PHP.<\/p>\n<p>Door deze drang naar meer nuttige foutmeldingen in PHP, zie je dat het geschikt maken van bestaande code met nieuwe PHP versies steeds meer tijd kost. Het geschikt maken van code die werkte in PHP 5.6 voor PHP 7.0 kostte in de meeste gevallen slechts een fractie van de tijd vergeleken met het upgraden van code om die geschikt te maken voor PHP 8.1. En dat ondanks het feit dat PHP 7.0 een &#8220;major&#8221; release was, terwijl PHP 8.1 een &#8220;minor&#8221; is.<\/p>\n<p>In veel gevallen is testen nog steeds de enige betrouwbare manier om te bepalen wat er gewijzigd moet worden om een nieuwe versie te ondersteunen.<\/p>\n<p>Unittesten is mogelijk met verschillende tools, waaronder:<\/p>\n<ul>\n<li><a href=\"https:\/\/phpunit.de\/\" target=\"_blank\" rel=\"noopener noreferrer\">PHPUnit<\/a><\/li>\n<li><a href=\"http:\/\/docs.mockery.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Mockery<\/a><\/li>\n<li><a href=\"https:\/\/docs.behat.org\/en\/latest\/\" target=\"_blank\" rel=\"noopener noreferrer\">Behat<\/a>,<\/li>\n<li><a href=\"http:\/\/datasift.github.io\/storyplayer\/v2\/using\/index.html\" target=\"_blank\" rel=\"noopener noreferrer\">Storyplayer<\/a><\/li>\n<\/ul>\n<p>Veel van deze tools zijn gebouwd op, of in combinatie met, PHPUnit.<\/p>\n<p>Uiteindelijk maakt het niet uit welke hulpmiddelen je gebruikt. Het belangrijkste is dat je test, en de tests op nieuwe PHP versies laat draaien. Deze stap kan soms erg lastig zijn, maar gelukkig zijn daar, zoals eerder gezegd, tools voor, zoals <a href=\"https:\/\/github.com\/Yoast\/PHPUnit-Polyfills\" target=\"_blank\" rel=\"noopener noreferrer\">PHPUnit Polyfills<\/a>.<\/p>\n<h3>Integratietesten<\/h3>\n<p>Integratietesten is de volgende stap die we gaan uitvoeren, na statische analyse en unittesten. Bij een integratietest worden levensechte situaties getest in een grotere context dan alleen een &#8220;code-unit&#8221; Hieronder vallen het testen met een actieve (test)database of het testen met een externe API, om maar twee voorbeelden te noemen.<\/p>\n<p>Als je dus de code van een plugin of thema test in de context van WordPress en een echte versie gebruikt, zijn dat per definitie integratietesten.<\/p>\n<p>WP Test Utils (opnieuw geschreven door Juliette en gesponsord door Yoast) is een uitstekende tool voor integratietesten. WP Test Utils biedt tooling om integratie- en unittests te schrijven, waarbij WordPress wordt &#8220;nagemaakt&#8221; met behulp van <a href=\"https:\/\/github.com\/Brain-WP\/BrainMonkey\" target=\"_blank\" rel=\"noopener noreferrer\">Brainmonkey<\/a> en <a href=\"http:\/\/docs.mockery.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Mockery<\/a>, waarbij veelgebruikte WordPress features worden &#8220;nagemaakt&#8221;, zodat je je eigen code test en niet de WordPress code.<\/p>\n<figure id=\"attachment_147877\" aria-describedby=\"caption-attachment-147877\" style=\"width: 911px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-147877 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/wp-test-utils.png\" alt=\"WP Test Utilities op GitHub\" width=\"911\" height=\"648\"><figcaption id=\"caption-attachment-147877\" class=\"wp-caption-text\">WP Test Utilities op GitHub<\/figcaption><\/figure>\n<p>Integratietesten met WordPress is een lastiger verhaal omdat het gaat om integratie met WordPress en de testsuite van WordPress. Afhankelijk van welke versies van WordPress een plugin of thema ondersteunt, moet je overwegen welke PHPUnit versies door WordPress zelf worden ondersteund om de tests op verschillende PHP versies uit te voeren.<\/p>\n<p>Bijvoorbeeld, WordPress 5.6 t\/m 5.8 gebruikt <a href=\"https:\/\/make.wordpress.org\/core\/handbook\/references\/phpunit-compatibility-and-wordpress-versions\/\" target=\"_blank\" rel=\"noopener noreferrer\">PHPUnit 5 t\/m 7<\/a> voor het testen van <a href=\"https:\/\/make.wordpress.org\/core\/handbook\/references\/php-compatibility-and-wordpress-versions\/\" target=\"_blank\" rel=\"noopener noreferrer\">PHP 5.6 t\/m PHP 8.0<\/a>, maar vanaf WordPress 5.9 gebruikt WordPress zelf ook PHPUnit Polyfills voor bredere ondersteuning. WP Test Utils fungeert als een brug om al deze verschillen te overbruggen.<\/p>\n<p>Wil je meer weten over hoe je integratietests kunt uitvoeren tegen meerdere verschillende versies van WordPress, waaronder WordPress 5.9 en hoger? <a href=\"https:\/\/make.wordpress.org\/core\/2021\/09\/27\/changes-to-the-wordpress-core-php-test-suite\/\" target=\"_blank\" rel=\"noopener noreferrer\">Lees er dan over op de website van WordPress<\/a>.<\/p>\n<h3>Handmatig testen<\/h3>\n<p>Nu je unittesten en integratietesten hebt doorlopen en alle problemen die je hebt gevonden hebt opgelost, is het tijd om handmatige testen uit te voeren. Je site draait, en je eigen code werkt, maar je gebruikt ook plugins A, B, en C. Weet je of die plugins compatibel zijn?<\/p>\n<p>Controleer dit bijvoorbeeld bij de auteurs van de plugin en kijk of zij aangeven dat hij compatibel is met PHP 8.x. De vraag is dan natuurlijk hoe de plugin is getest. Vaak is het antwoord hier: in isolatie. De functies van de plugin zijn meestal getest in combinatie met alleen WordPress, zonder andere actieve plugins. En zelfs als binnen deze tests andere plugins werden gebruikt, is de kans groot dat niet alle door <em>jou<\/em> gebruikte plugins deel uitmaakten van de tests, dus neem zo&#8217;n compatibiliteitsverklaring met een korreltje zout.<\/p>\n<p>Neem bijvoorbeeld een WordPress site met 3 plugins (A, B en C). Het is mogelijk dat plugin B via een filter een verkeerd variabelentype teruggeeft, waar plugin C, die hetzelfde filter gebruikt, mee wil werken. Dit kan dan een fatale fout veroorzaken omdat het type niet meer is wat verwacht wordt. Plugin C wordt dan gezien als de boosdoener van de foutmelding, ook al is plugin B de echte dader.<\/p>\n<p>Plugin interoperabiliteit-incompatibiliteiten zijn onmogelijk te ontdekken bij ge\u00efsoleerd testen. Hoe meer actieve plugins, hoe groter de kans dat er iets fout gaat. Het zou bijvoorbeeld heel nuttig zijn om paginaverzoeken van een live website door te geven aan een testomgeving (met error logging ingeschakeld) om te ontdekken wat er eigenlijk fout gaat.<\/p>\n<p>Bij dit soort problemen zal een site-eigenaar meestal alleen een bericht zien dat er een fout was met de laatst uitgevoerde code (in dit geval van plugin C), ook al is plugin C niet noodzakelijkerwijs de oorzaak van het probleem.<\/p>\n<p>In de meeste gevallen komt er veel handmatig, menselijk werk bij kijken, en is er een gezonde hoeveelheid elleboogvet nodig om deze problemen op te sporen en op te lossen. Dit <em>zou <\/em>geautomatiseerd kunnen worden met behulp van end-to-end testen, maar we zien dit niet veel gebeuren in WordPress.<\/p>\n<h4>Testbeschikbaarheid voor gebruikte plugins<\/h4>\n<p>Voor ontwikkelaars en ontwikkelteams: Accepteer code alleen als er tests beschikbaar zijn. Zo zorg je ervoor dat er minder handmatig getest hoeft te worden, wat veel tijd bespaart.<\/p>\n<p>Trek de teststrategie ervan in twijfel als je een commerci\u00eble plugin of thema wilt kopen. Op die manier cre\u00ebren we collectief bewustzijn bij developers\/devteams in de WordPress gemeenschap om testen hoger op de agenda te krijgen, en daar profiteren we allemaal van.<\/p>\n<p>Testen wordt vaak &#8211; onterecht &#8211; gezien als een kostenpost, terwijl het in werkelijkheid geld bespaart. De extra investering die nodig is om tests te schrijven betaalt zich terug in de vorm van aanzienlijk minder foutmeldingen en minder tijd die nodig is om fouten te repareren. Bovendien kunnen met geautomatiseerde softwaretests uitbreidingen en wijzigingen sneller worden uitgevoerd, omdat de tests snel kunnen bevestigen dat de bestaande functionaliteit blijft werken.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-\">\n        <p><strong>Pro-tip van Juliette<\/strong><\/p>\n<p>Wanneer je nieuwe code wilt gaan schrijven:<\/p>\n<ol>\n<li>Begin met uit te schrijven wat een functie moet doen en met welke logica. Schrijf dit als commentaar of serie commentaren.<\/li>\n<li>Schrijf de tests. Probeer ook randgevallen in gedachten te houden.<\/li>\n<li>Schrijf dan pas de code.<\/li>\n<\/ol>\n<p>Van de oorspronkelijke logica die je in het commentaar beschreven hebt, zal de helft verdwenen zijn omdat die vervangen is door code. Laat de rest van het commentaar gewoon staan, want dat kan je later weer helpen de logica te begrijpen als je een tijdje niet naar je code hebt gekeken<\/p>\n<\/aside>\n\n\n<h2>De rol van WordPress Hosts en PHP 8.x<\/h2>\n<p>Voor de gemiddelde site-eigenaar is goede begeleiding vanuit de host zeer wenselijk. Overweeg het volgende:<\/p>\n<ul>\n<li>Documentatie en updates voor klanten dat WordPress Core, plugins en\/of thema&#8217;s (in sommige gevallen) niet PHP cross-version compatibel zijn<\/li>\n<li>Opties voor testen (zoals <a href=\"https:\/\/kinsta.com\/nl\/wordpress-hosting\/testomgevingen\/\">het werken met een testomgeving<\/a>)<\/li>\n<li>Methoden voor rapporteren van fouten en contact met ondersteuning<\/li>\n<\/ul>\n<p>Dit komt ook een webhost ten goede, want site-eigenaren nemen vaak contact op met de host voor hulp bij problemen. In het geval van een overstap naar PHP 8.0, 8.1, of 8.2 is de site-eigenaar verantwoordelijk voor mogelijke problemen, en hoe meer informatie de eigenaar heeft om zich goed op de overstap voor te bereiden, hoe beter.<\/p>\n<p>Als webhost PHP 8.1 of 8.2 beschikbaar maken voor klanten is \u00e9\u00e9n ding, maar daarbij moeten ze ervoor zorgen dat ze bewustzijn cre\u00ebren bij klanten, zodat ze weten dat er problemen kunnen opduiken. Het testen van je site in een testomgeving met een andere versie dan live wordt aanbevolen. (Het selecteren van PHP versies is <a href=\"https:\/\/kinsta.com\/nl\/changelog\/php-8\/\">standaard beschikbaar bij Kinsta<\/a>.)<\/p>\n<h2>Minimum PHP versie voor WordPress<\/h2>\n<p>Meer dan 15% van alle websites gebruikt momenteel PHP versie 7.0 of lager. Dit is te zien in de <a href=\"https:\/\/wordpress.org\/about\/stats\/\" target=\"_blank\" rel=\"noopener noreferrer\">offici\u00eble statistieken van WordPress<\/a>. Ongeveer 83% van alle WordPress sites gebruikt momenteel PHP versie 7.4 of lager. Let op dat alles lager of gelijk aan versie 8.0 momenteel <a href=\"https:\/\/www.php.net\/supported-versions\" target=\"_blank\" rel=\"noopener noreferrer\">niet meer ondersteund wordt door PHP<\/a>. Het gebruik van end-of-life versies van PHP kan leiden tot problemen omdat er geen beveiligingsupdates meer worden uitgebracht.<\/p>\n<p>Om problemen te voorkomen is het belangrijk dat eigenaren van WordPress sites op de hoogte zijn van de minimale PHP versie waarmee hun site veilig kan draaien. Van hun kant kunnen site-eigenaren zelf de PHP versie aanpassen (<a href=\"https:\/\/kinsta.com\/nl\/blog\/hoe-php-updaten-in-wordpress\/\">mogelijk bij Kinsta voor alle pakketten<\/a>) of hun host vragen de site bij te werken naar een nieuwere PHP versie. In extreme gevallen kun je overstappen naar een host die deze nieuwere versies ondersteunt.<\/p>\n<p>Omdat WordPress slechts een <a href=\"https:\/\/wordpress.org\/about\/requirements\/\" target=\"_blank\" rel=\"noopener noreferrer\">minimale versie van 7.4<\/a> vereist, is er voor veel hosts en website-eigenaren onvoldoende motivatie om hun sites bij te werken. En dat terwijl PHP 7.4 in <a href=\"https:\/\/www.php.net\/eol.php\" target=\"_blank\" rel=\"noopener noreferrer\">november 2022<\/a> zijn end-of-life heeft bereikt.<\/p>\n<p>Als WordPress ooit toch de minimale PHP versie verhoogt, kan dat betekenen dat veel sites niet meer compatibel zijn met een update naar de nieuwste WordPress versie. Voor die verouderde versies zullen echter nog geruime tijd beveiligingsupdates worden uitgebracht.<\/p>\n<h2>Samenvatting<\/h2>\n<p>Om voor je website over te stappen op PHP 8.0 of hoger zijn er verschillende stappen die jij, of je developer, moet uitvoeren. Belangrijke stappen zijn onder andere:<\/p>\n<ul>\n<li>Statische analyse<\/li>\n<li>Unittesten<\/li>\n<li>Integratietesten<\/li>\n<li>Handmatig testen<\/li>\n<\/ul>\n<p>Als je overstapt op PHP 8.x, zorg er dan voor dat <em>alles<\/em> goed getest is. Dit is de enige manier om te garanderen dat je site goed, snel en veilig draait op een nieuwere PHP-versie.<\/p>\n<p>We bedanken Juliette enorm voor haar medewerking aan dit artikel en voor al haar werk aan de genoemde tools!<\/p>\n<p><em>Foto van Juliette, gemaakt door Jip Moors en gebruikt met toestemming.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Lees wat er allemaal komt kijken bij een soepele transitie naar PHP 8.x voor jouw WordPress site, plugin of thema, inclusief een stappenplan.<\/p>\n","protected":false},"author":139,"featured_media":42775,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[856,867],"class_list":["post-42601","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-php-leren","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>Overstappen naar PHP 8.x in vier stappen - Een interview met Juliette Reinders Folmer - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Leer wat er komt kijken bij een soepele overgang naar PHP 8.x voor je WordPress site, plugin of thema, inclusief een stappenplan.\" \/>\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\/nl\/blog\/overstappen-naar-php-8\/\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Overstappen naar PHP 8.x in vier stappen - Een interview met Juliette Reinders Folmer\" \/>\n<meta property=\"og:description\" content=\"Leer wat er komt kijken bij een soepele overgang naar PHP 8.x voor je WordPress site, plugin of thema, inclusief een stappenplan.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/nl\/blog\/overstappen-naar-php-8\/\" \/>\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=\"2023-04-03T16:20:35+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-16T14:47:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2022\/04\/overstappen-naar-PHP8-juliette-reinders-folmer.png\" \/>\n\t<meta property=\"og:image:width\" content=\"863\" \/>\n\t<meta property=\"og:image:height\" content=\"430\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Marcel Bootsman\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Leer wat er komt kijken bij een soepele overgang naar PHP 8.x voor je WordPress site, plugin of thema, inclusief een stappenplan.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2022\/04\/overstappen-naar-PHP8-juliette-reinders-folmer.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=\"Marcel Bootsman\" \/>\n\t<meta name=\"twitter:label2\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/overstappen-naar-php-8\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/overstappen-naar-php-8\/\"},\"author\":{\"name\":\"Marcel Bootsman\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/d8f086a7911078001ff0e6c05d42b5c7\"},\"headline\":\"Overstappen naar PHP 8.x in vier stappen &#8211; Een interview met Juliette Reinders Folmer\",\"datePublished\":\"2023-04-03T16:20:35+00:00\",\"dateModified\":\"2023-06-16T14:47:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/overstappen-naar-php-8\/\"},\"wordCount\":3841,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/overstappen-naar-php-8\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2022\/04\/overstappen-naar-PHP8-juliette-reinders-folmer.png\",\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/overstappen-naar-php-8\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/overstappen-naar-php-8\/\",\"url\":\"https:\/\/kinsta.com\/nl\/blog\/overstappen-naar-php-8\/\",\"name\":\"Overstappen naar PHP 8.x in vier stappen - Een interview met Juliette Reinders Folmer - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/overstappen-naar-php-8\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/overstappen-naar-php-8\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2022\/04\/overstappen-naar-PHP8-juliette-reinders-folmer.png\",\"datePublished\":\"2023-04-03T16:20:35+00:00\",\"dateModified\":\"2023-06-16T14:47:55+00:00\",\"description\":\"Leer wat er komt kijken bij een soepele overgang naar PHP 8.x voor je WordPress site, plugin of thema, inclusief een stappenplan.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/overstappen-naar-php-8\/#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/overstappen-naar-php-8\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/overstappen-naar-php-8\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2022\/04\/overstappen-naar-PHP8-juliette-reinders-folmer.png\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2022\/04\/overstappen-naar-PHP8-juliette-reinders-folmer.png\",\"width\":863,\"height\":430,\"caption\":\"Overstappen naar PHP 8 - Juliette Reinders Folmer\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/overstappen-naar-php-8\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/nl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PHP updates\",\"item\":\"https:\/\/kinsta.com\/nl\/onderwerpen\/php-updates\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Overstappen naar PHP 8.x in vier stappen &#8211; Een interview met Juliette Reinders Folmer\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/nl\/#website\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Snelle, veilige, premium hostingoplossingen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/nl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.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:\/\/kinsta.com\/nl\/#\/schema\/person\/d8f086a7911078001ff0e6c05d42b5c7\",\"name\":\"Marcel Bootsman\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1bf6543c8d557c182b40836c561bf0cd?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1bf6543c8d557c182b40836c561bf0cd?s=96&d=mm&r=g\",\"caption\":\"Marcel Bootsman\"},\"description\":\"Partnerships &amp; Community Manager EMEA. Je kan me bereiken via Linkedin.\",\"sameAs\":[\"https:\/\/kinsta.com\/nl\/\",\"https:\/\/www.linkedin.com\/in\/marcelbootsman\/\"],\"url\":\"https:\/\/kinsta.com\/nl\/blog\/author\/marcelbootsman\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Overstappen naar PHP 8.x in vier stappen - Een interview met Juliette Reinders Folmer - Kinsta\u00ae","description":"Leer wat er komt kijken bij een soepele overgang naar PHP 8.x voor je WordPress site, plugin of thema, inclusief een stappenplan.","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\/nl\/blog\/overstappen-naar-php-8\/","og_locale":"nl_NL","og_type":"article","og_title":"Overstappen naar PHP 8.x in vier stappen - Een interview met Juliette Reinders Folmer","og_description":"Leer wat er komt kijken bij een soepele overgang naar PHP 8.x voor je WordPress site, plugin of thema, inclusief een stappenplan.","og_url":"https:\/\/kinsta.com\/nl\/blog\/overstappen-naar-php-8\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","article_published_time":"2023-04-03T16:20:35+00:00","article_modified_time":"2023-06-16T14:47:55+00:00","og_image":[{"width":863,"height":430,"url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2022\/04\/overstappen-naar-PHP8-juliette-reinders-folmer.png","type":"image\/png"}],"author":"Marcel Bootsman","twitter_card":"summary_large_image","twitter_description":"Leer wat er komt kijken bij een soepele overgang naar PHP 8.x voor je WordPress site, plugin of thema, inclusief een stappenplan.","twitter_image":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2022\/04\/overstappen-naar-PHP8-juliette-reinders-folmer.png","twitter_creator":"@Kinsta_NL","twitter_site":"@Kinsta_NL","twitter_misc":{"Geschreven door":"Marcel Bootsman","Geschatte leestijd":"18 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/nl\/blog\/overstappen-naar-php-8\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/blog\/overstappen-naar-php-8\/"},"author":{"name":"Marcel Bootsman","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/d8f086a7911078001ff0e6c05d42b5c7"},"headline":"Overstappen naar PHP 8.x in vier stappen &#8211; Een interview met Juliette Reinders Folmer","datePublished":"2023-04-03T16:20:35+00:00","dateModified":"2023-06-16T14:47:55+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/overstappen-naar-php-8\/"},"wordCount":3841,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/overstappen-naar-php-8\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2022\/04\/overstappen-naar-PHP8-juliette-reinders-folmer.png","inLanguage":"nl-NL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/nl\/blog\/overstappen-naar-php-8\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/nl\/blog\/overstappen-naar-php-8\/","url":"https:\/\/kinsta.com\/nl\/blog\/overstappen-naar-php-8\/","name":"Overstappen naar PHP 8.x in vier stappen - Een interview met Juliette Reinders Folmer - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/overstappen-naar-php-8\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/overstappen-naar-php-8\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2022\/04\/overstappen-naar-PHP8-juliette-reinders-folmer.png","datePublished":"2023-04-03T16:20:35+00:00","dateModified":"2023-06-16T14:47:55+00:00","description":"Leer wat er komt kijken bij een soepele overgang naar PHP 8.x voor je WordPress site, plugin of thema, inclusief een stappenplan.","breadcrumb":{"@id":"https:\/\/kinsta.com\/nl\/blog\/overstappen-naar-php-8\/#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/nl\/blog\/overstappen-naar-php-8\/"]}]},{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/blog\/overstappen-naar-php-8\/#primaryimage","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2022\/04\/overstappen-naar-PHP8-juliette-reinders-folmer.png","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2022\/04\/overstappen-naar-PHP8-juliette-reinders-folmer.png","width":863,"height":430,"caption":"Overstappen naar PHP 8 - Juliette Reinders Folmer"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/nl\/blog\/overstappen-naar-php-8\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/nl\/"},{"@type":"ListItem","position":2,"name":"PHP updates","item":"https:\/\/kinsta.com\/nl\/onderwerpen\/php-updates\/"},{"@type":"ListItem","position":3,"name":"Overstappen naar PHP 8.x in vier stappen &#8211; Een interview met Juliette Reinders Folmer"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/nl\/#website","url":"https:\/\/kinsta.com\/nl\/","name":"Kinsta\u00ae","description":"Snelle, veilige, premium hostingoplossingen","publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/nl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/nl\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/nl\/","logo":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.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:\/\/kinsta.com\/nl\/#\/schema\/person\/d8f086a7911078001ff0e6c05d42b5c7","name":"Marcel Bootsman","image":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1bf6543c8d557c182b40836c561bf0cd?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1bf6543c8d557c182b40836c561bf0cd?s=96&d=mm&r=g","caption":"Marcel Bootsman"},"description":"Partnerships &amp; Community Manager EMEA. Je kan me bereiken via Linkedin.","sameAs":["https:\/\/kinsta.com\/nl\/","https:\/\/www.linkedin.com\/in\/marcelbootsman\/"],"url":"https:\/\/kinsta.com\/nl\/blog\/author\/marcelbootsman\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/42601","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/users\/139"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/comments?post=42601"}],"version-history":[{"count":16,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/42601\/revisions"}],"predecessor-version":[{"id":61829,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/42601\/revisions\/61829"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/42601\/translations\/en"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/42601\/translations\/nl"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/42601\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/42601\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/42601\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/42601\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/42601\/translations\/jp"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/42601\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/42601\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/42601\/translations\/dk"},{"href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/42601\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media\/42775"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media?parent=42601"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/tags?post=42601"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/topic?post=42601"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}