{"id":59876,"date":"2023-03-07T11:38:30","date_gmt":"2023-03-07T10:38:30","guid":{"rendered":"https:\/\/kinsta.com\/de\/?p=59876&#038;preview=true&#038;preview_id=59876"},"modified":"2023-08-28T10:51:16","modified_gmt":"2023-08-28T09:51:16","slug":"umsteigen-auf-php-8","status":"publish","type":"post","link":"https:\/\/kinsta.com\/de\/blog\/umsteigen-auf-php-8\/","title":{"rendered":"Umstieg auf PHP 8.x in vier Schritten &#8211; Ein Interview mit Juliette Reinders Folmer"},"content":{"rendered":"<p>Eine WordPress-Website, ein Plugin oder ein Theme auf eine neue PHP-Version zu aktualisieren, ist eine Aufgabe, die regelm\u00e4\u00dfig wiederkehrt. Aber wie kannst du das so effizient wie m\u00f6glich machen? Woher wei\u00dft du, dass du nichts \u00fcbersehen wirst? Gibt es einen Fahrplan daf\u00fcr?<\/p>\n<p>In diesem Artikel gehen wir auf diese Fragen (und mehr) ein und schauen uns an, was f\u00fcr eine reibungslose Umstellung auf PHP 8.x f\u00fcr deine WordPress-Website, dein Plugin oder dein Theme n\u00f6tig ist, einschlie\u00dflich einer Roadmap.<\/p>\n<p>Dabei st\u00fctzen wir uns auf ein Interview, das wir mit der PHP-Expertin Juliette Reinders Folmer gef\u00fchrt haben. Sie widmet einen Gro\u00dfteil ihres Alltags der Programmierung und allem, was damit zusammenh\u00e4ngt, und konzentriert sich dabei vor allem auf Open-Source-Projekte, darunter WordPress.<\/p>\n<p>Bist du auch bereit, den Umstieg reibungslos zu schaffen? Bist du neugierig auf unseren Schritt-f\u00fcr-Schritt-Plan? Dann lass uns gleich 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>PHP 8.x &#8211; Was sich ge\u00e4ndert hat<\/h2>\n<p>Um einen \u00dcberblick \u00fcber die \u00c4nderungen zu bekommen, empfehlen wir die folgenden Artikel:<\/p>\n<ul>\n<li>Versionshinweise f\u00fcr<a href=\"https:\/\/www.php.net\/releases\/8.0\/en.php\" target=\"_blank\" rel=\"noopener noreferrer\"> PHP 8.0<\/a> und <a href=\"https:\/\/www.php.net\/releases\/8.1\/en.php\" target=\"_blank\" rel=\"noopener noreferrer\">PHP 8.1<\/a><\/li>\n<li>Migrationsleitfaden f\u00fcr <a href=\"https:\/\/www.php.net\/manual\/en\/migration80.php\" target=\"_blank\" rel=\"noopener noreferrer\">PHP 8.0<\/a> und <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 und PHP 8.0<\/a> und der <a href=\"https:\/\/make.wordpress.org\/core\/2022\/01\/10\/wordpress-5-9-and-php-8-0-8-1\/\" target=\"_blank\" rel=\"noopener noreferrer\">aktuelle Stand<\/a><\/li>\n<li><a href=\"https:\/\/kinsta.com\/de\/blog\/php-8\/\">Was ist neu in PHP 8.0<\/a>\u00a0und <a href=\"https:\/\/kinsta.com\/de\/blog\/php-8-1\/\">PHP 8.1<\/a><\/li>\n<li><a href=\"https:\/\/kinsta.com\/de\/blog\/php-8-2\/\">Was ist neu in PHP 8.2<\/a> und im <a href=\"https:\/\/www.php.net\/manual\/en\/migration82.php\">PHP 8.2 Migrationsleitfaden<\/a>.<\/li>\n<\/ul>\n<p>Nachdem du diese Artikel gelesen hast, bist du auf dem neuesten Stand, was sich in PHP 8.x ge\u00e4ndert hat und was du tun musst, damit deine PHP-Projekte problemlos laufen.<\/p>\n<p>Wenn du dir unsicher bist, wie du am besten anf\u00e4ngst, ist das kein Problem. Im Gespr\u00e4ch mit Juliette haben wir das ausf\u00fchrlich besprochen, und wir erkl\u00e4ren dir in diesem Artikel so ausf\u00fchrlich wie m\u00f6glich, wie du auf PHP 8.x umsteigen kannst.<\/p>\n<p>Au\u00dferdem erkl\u00e4ren wir dir in informativen K\u00e4sten, wie du verschiedene Vorg\u00e4nge in <a href=\"https:\/\/kinsta.com\/de\/mykinsta\/\">MyKinsta<\/a>, unserem firmeneigenen Kontrollpanel f\u00fcr alle deine WordPress-Sites, Anwendungen und Datenbanken, durchf\u00fchren kannst.<\/p>\n<h2>Der Umstieg auf PHP 8.x: So f\u00e4ngst du an<\/h2>\n<p>Die Umstellung auf PHP 8.x klingt einfach und ist es auch. Bei vielen Hostern kannst du im Admin-Panel angeben, welche PHP-Version du f\u00fcr deine Website verwenden m\u00f6chtest. Bei Kinsta <a href=\"https:\/\/kinsta.com\/de\/changelog\/php-8\/\">kannst du die PHP-Version<\/a> mit einem einzigen Klick im MyKinsta-Dashboard umstellen.<\/p>\n<p>Aber bevor du das tust, musst du dir \u00fcber einige Dinge im Klaren sein. Je nach deinem Wissensstand und deiner Erfahrung empfehlen wir Folgendes:<\/p>\n<ul>\n<li>Wenn du deine eigene WordPress-Seite mit Standard-Themes und -Plugins erstellt hast, ohne viel \u00fcber PHP zu wissen, solltest du einen Entwickler oder eine Agentur damit beauftragen, zu pr\u00fcfen, ob deine Seite f\u00fcr PHP 8.x geeignet ist Dann sieh dir <a href=\"https:\/\/kinsta.com\/de\/partner\/\">unsere Partnerseite<\/a> an, auf der einige vertrauensw\u00fcrdige Unternehmen aufgelistet sind, die dir helfen k\u00f6nnen.<\/li>\n<li>Wenn deine WordPress-Website von einem externen Unternehmen, einem Entwickler oder einer Agentur erstellt wurde, solltest du dich bei ihnen erkundigen, ob deine Website mit PHP 8.x betrieben werden kann.<\/li>\n<li>Wenn du deine WordPress-Website selbst erstellt hast, z. B. mit einem eigenen Theme oder selbst entwickelten Plugins, haben wir unten eine Roadmap f\u00fcr dich.<\/li>\n<\/ul>\n<p>Wenn deine Website in eine der ersten beiden Kategorien f\u00e4llt, solltest du dir den Rest des Artikels durchlesen, aber wir empfehlen dir nicht, deine Website selbst auf PHP 8-Kompatibilit\u00e4t zu testen. \u00dcberlass das lieber den Profis.<\/p>\n<p>Wie auch immer du dich entscheidest, wir w\u00fcrden dir raten, nicht einfach deine Live-Site auf PHP 8 umzustellen und &#8222;zu sehen, ob es funktioniert&#8220; Bist du neugierig darauf, wie deine Website aussehen wird, und kannst es kaum erwarten, sie unter PHP 8 laufen zu sehen? Dann beginne mit den Tests in einer Staging-Umgebung. Bei einem guten Hoster kannst du ganz einfach <a href=\"https:\/\/kinsta.com\/de\/blog\/wordpress-einzurichten\/\">eine Staging-Umgebung einrichten<\/a>.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Das Einrichten einer Staging-Umgebung mit Kinsta ist ganz einfach.<\/p>\n<p>In <a href=\"https:\/\/my.kinsta.com\/?lang=de?lang=en\">MyKinsta<\/a> klickst du in der linken Navigation auf <strong>WordPress-Sites <\/strong>. Du siehst nun eine Liste deiner WordPress-Sites\/Installationen. W\u00e4hle die Site aus, f\u00fcr die du eine Staging-Umgebung erstellen m\u00f6chtest, klicke auf den <strong>Environment Picker <\/strong>neben dem Site-Namen und w\u00e4hle aus dem Dropdown-Men\u00fc die Option <strong>Neue Umgebung erstellen<\/strong><strong>\u00a0<\/strong>. Im Pop-up-Fenster &#8222;<strong>Neue Umgebung erstellen&#8220; <\/strong>gibst du deiner Umgebung einen Namen, w\u00e4hlst &#8222;<strong>Standardumgebung<\/strong>&#8220; und klickst auf die Schaltfl\u00e4che &#8222;<strong>Neue Umgebung erstellen<\/strong>&#8222;.<\/p>\n<p>Als N\u00e4chstes wirst du aufgefordert, die Umgebung auszuw\u00e4hlen, die du erstellen m\u00f6chtest. W\u00e4hle Option 1, <strong>Klone eine bestehende Umgebung<\/strong>. Klicke nun auf die Schaltfl\u00e4che <strong>Neue<\/strong> <strong>Umgebung erstellen<\/strong>, woraufhin die Erstellung der neuen Umgebung beginnt. Dies kann ein paar Minuten dauern. Sobald der Vorgang abgeschlossen ist, kannst du die neue Standard-Staging-Umgebung aus dem Dropdown-Men\u00fc <strong>Environment Selector <\/strong>neben dem Site-Namen ausw\u00e4hlen.<\/p>\n<p>Erfahre mehr dar\u00fcber, wie du <a href=\"https:\/\/kinsta.com\/de\/docs\/wordpress-hosting\/staging-umgebung\/\">eine Staging-Umgebung erstellst<\/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 - Eine neue Umgebung erstellen\" width=\"2864\" height=\"968\"><figcaption id=\"caption-attachment-147928\" class=\"wp-caption-text\">MyKinsta &#8211; Eine neue Umgebung erstellen<\/figcaption><\/figure>\n<p>In der Staging-Umgebung kannst du PHP 8.x aktivieren und sehen, ob das Update gut mit deiner Website funktioniert. Es ist auch m\u00f6glich, mit einer lokalen Kopie deiner Website zu arbeiten. Mit unserem <a href=\"https:\/\/kinsta.com\/de\/devkinsta\/\">kostenlosen Entwicklungstool DevKinsta<\/a> kannst du deine Website ganz einfach aus dem <a href=\"https:\/\/kinsta.com\/de\/mykinsta\/\">MyKinsta-Dashboard<\/a> importieren und anschlie\u00dfend die PHP-Version auf 8.0 oder 8.1 \u00e4ndern.<\/p>\n<p>Wenn du in der Staging-Umgebung keine Probleme siehst, hei\u00dft das nicht unbedingt, dass es keine Probleme gibt. In der Roadmap unten erf\u00e4hrst du, warum.<\/p>\n<h2>PHP 8.x Kompatibilit\u00e4tstests: Der Wegweiser<\/h2>\n<p>Testen: das Schl\u00fcsselwort f\u00fcr gute Software. Auch bei WordPress-Websites und ihren Komponenten, wie Themes, Plugins und dem WordPress-Kern, ist Testen das Mittel, um sicherzustellen, dass nichts passiert, was du nicht willst.<\/p>\n<p>Ein Softwareentwicklungsprojekt besteht zu einem gro\u00dfen Teil aus Testen. In diesem Artikel gehen wir speziell auf die Tests ein, die dir helfen k\u00f6nnen, den \u00dcbergang zu PHP 8.x reibungslos zu gestalten. In unserem Artikel \u00fcber DevOps-Tools findest du einen Abschnitt mit einer <a href=\"https:\/\/kinsta.com\/de\/blog\/devops-tools\/#devops-testtools\">Sammlung von Tools<\/a>, die du verwenden kannst.<\/p>\n<p>Die folgenden Arten von Tests werden in diesem Blogbeitrag besprochen:<\/p>\n<div><\/div><kinsta-auto-toc list-style=\"decimal\" selector=\"h3\" count-number=\"-1\" sub-toc=\"true\"><\/kinsta-auto-toc>\n<p>Schauen wir uns die verschiedenen Arten von Tests, die wir durchf\u00fchren k\u00f6nnen, genauer an.<\/p>\n<h3>Statische Analyse (oder statische Tests)<\/h3>\n<p>Der erste Schritt, den du als PHP-Entwickler\/in machen kannst, ist eine statische Analyse deines Codes mit verschiedenen Tools. Bei der statischen Analyse wird die Software analysiert, ohne dass der Code ausgef\u00fchrt wird. Mit der statischen Analyse ist es m\u00f6glich, Fehler aufzusp\u00fcren, Probleme mit der Kompatibilit\u00e4t von PHP 8.x zu erkennen, Codierungsstandards durchzusetzen (z. B. die <a href=\"https:\/\/make.wordpress.org\/core\/handbook\/best-practices\/coding-standards\/\" target=\"_blank\" rel=\"noopener noreferrer\">WordPress Coding Standards<\/a>) und sogar den Code zu \u00e4ndern und zu bereinigen.<\/p>\n<h4>Tools f\u00fcr die statische Analyse<\/h4>\n<p>Du kannst eine statische Analyse mit verschiedenen Tools durchf\u00fchren, wie z. B.:<\/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>Zum Zeitpunkt der Erstellung dieses Artikels werden nicht alle PHP 8.1 Checks in der neuesten PHPCompatibility Version unterst\u00fctzt. PHP 8.1-Pr\u00fcfungen k\u00f6nnen in der Entwicklungsversion enthalten sein. Stelle also sicher, dass du diese (vorerst) verwendest, wenn du dein Projekt mit PHPCompatibility analysierst und siehst, welche Fehler\/Empfehlungen auftauchen.<\/p>\n<p>Die PHP 8.1 Checks werden bald in einer neuen <em>Hauptversion <\/em>ver\u00f6ffentlicht. Wenn du dar\u00fcber auf dem Laufenden bleiben willst und ein GitHub-Konto hast, \u00f6ffne das <a href=\"https:\/\/github.com\/PHPCompatibility\/PHPCompatibility\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub-Repository von PHPCompatibility<\/a> und navigiere zu <strong>Beobachten<\/strong> -&gt; <strong>Benutzerdefiniert<\/strong> -&gt; <strong>Releases<\/strong>, wo du ausw\u00e4hlen kannst, ob du benachrichtigt werden willst, wenn eine neue Version ver\u00f6ffentlicht wird.<\/p>\n<p>PHPCompatibility, das nur die Kompatibilit\u00e4t f\u00fcr eine bestimmte Version (oder eine Reihe von Versionen) von PHP testet, ist einfach einzurichten. Die besten Ergebnisse erh\u00e4ltst du, wenn du innerhalb von PHPCompatibility eine <a href=\"https:\/\/github.com\/PHPCompatibility\/PHPCompatibility#sniffing-your-code-for-compatibility-with-specific-php-versions\" target=\"_blank\" rel=\"noopener noreferrer\">testVersion<\/a> &#8211; zum Beispiel 8.0+ (8.0 und h\u00f6her) &#8211; ausf\u00fchrst.<\/p>\n<p>Du solltest auf veraltete oder gel\u00f6schte Funktionen achten, auf ge\u00e4nderte Standardwerte von Funktionsparametern, auf die Verwendung von concat ohne Klammern, auf die Verwendung von match als Funktionsname (da es seit PHP 8.0 reserviert ist), usw.<\/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 von der PHPCompatibility GitHub-Seite\" width=\"1024\" height=\"619\"><figcaption id=\"caption-attachment-147872\" class=\"wp-caption-text\">Screenshot von der PHPCompatibility GitHub-Seite<\/figcaption><\/figure>\n<p>Psalm und PHPStan sind gute Erg\u00e4nzungen und k\u00f6nnen dir helfen, indem sie zus\u00e4tzliche Pr\u00fcfungen in Bezug auf Variablentypen durchf\u00fchren. Der Nachteil dieser Tools ist, dass es eine Menge Konfiguration braucht, um Berichte \u00fcber PHP 8.0 und 8.1 zu erhalten. Selbst wenn sie erfolgreich sind, musst du mit vielen falsch positiven Meldungen rechnen. False Positives sind Meldungen, die aufgrund der Einschr\u00e4nkungen der statischen Analyse f\u00e4lschlicherweise ausgegeben werden.<\/p>\n<p>Um die Ergebnisse dieser beiden Tools richtig zu interpretieren, sind fundierte Kenntnisse erforderlich, aber diese Kenntnisse k\u00f6nnen dir helfen, zus\u00e4tzliche Inkompatibilit\u00e4ten zu erkennen, die PHPCompatibility nicht finden kann. Schau dir die Dokumentation von <a href=\"https:\/\/psalm.dev\/docs\/\" target=\"_blank\" rel=\"noopener noreferrer\">Psalm<\/a> und <a href=\"https:\/\/phpstan.org\/user-guide\/getting-started\" target=\"_blank\" rel=\"noopener noreferrer\">PHPStan<\/a> an, wenn du mehr dar\u00fcber erfahren willst.<\/p>\n<p>Zusammenfassung:<\/p>\n<ul>\n<li>Statische Analyse mit PHPCompatibility, Psalm und PHPStan durchf\u00fchren<\/li>\n<li>Behebe alle legitimen Probleme<\/li>\n<\/ul>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-\">\n        <p><strong>Expertentipp von Juliette<\/strong><\/p>\n<p>Setze beim Testen in deiner php.ini \/ wp-config.php Datei den Wert f\u00fcr error_reporting auf -1. Das h\u00e4ngt damit zusammen, dass E_ALL, je nach PHP-Version, nicht alles enth\u00e4lt.<\/p>\n<p>Erst ab 8.0 enth\u00e4lt E_ALL alles. Schalte au\u00dferdem log_errors ein, um die Meldungen in einer Logdatei nachzuvollziehen.<\/p>\n<p>Schalte die Fehlerprotokollierung nicht auf einer Live-Site ein, denn das kann zu Verz\u00f6gerungen f\u00fchren, da die Daten in eine Datei geschrieben werden m\u00fcssen. Mache das also in einer Staging-Umgebung und stelle sicher, dass du wei\u00dft, was passiert und was nicht.<\/p>\n<p>Um deine Logs in MyKinsta einzusehen, gehe auf die Website und klicke im Men\u00fc auf <strong>Logs <\/strong>. Hier kannst du die Dateien error.log und access.log einsehen und alle Log-Eintr\u00e4ge studieren.<\/p>\n<p><a href=\"https:\/\/kinsta.com\/de\/docs\/wordpress-hosting\/wordpress-fehlerbehebung\/server-protokolle-anzeigen\/\">Klicke hier, um mehr \u00fcber die Anzeige von Protokollen in MyKinsta zu erfahren<\/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 - Logdateien ansehen\" width=\"2806\" height=\"1746\"><figcaption id=\"caption-attachment-147929\" class=\"wp-caption-text\">MyKinsta &#8211; Logdateien ansehen<\/figcaption><\/figure>\n<h3>Unit-Tests<\/h3>\n<p>Der n\u00e4chste Schritt im Prozess ist das Unit Testing. Beim Unit-Testing werden die einzelnen Teile des Codes getestet. Bei den Unit-Tests werden f\u00fcr jede Unit spezielle, gezielte Tests entwickelt. Dabei werden verschiedene Szenarien durchgespielt. Vorzugsweise wird jedes Szenario getrennt von den anderen getestet, damit die Tests unabh\u00e4ngig voneinander sind.<\/p>\n<p>Unit-Tests allein einzurichten reicht nat\u00fcrlich nicht aus. Sie m\u00fcssen auch ausgef\u00fchrt werden. Unit-Tests lassen sich am besten mit CI-Werkzeugen (Continuous Integration) wie <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> oder <a href=\"https:\/\/www.travis-ci.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Travis<\/a> automatisieren.<\/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=\"Ein Beispiel von GitHub Actions\" width=\"1024\" height=\"687\"><figcaption id=\"caption-attachment-147875\" class=\"wp-caption-text\">Ein Beispiel von GitHub Actions<\/figcaption><\/figure>\n<h4>Unterst\u00fctzung f\u00fcr mehrere PHP-Versionen<\/h4>\n<p>Wenn du als Plugin-Entwickler mehrere PHP-Versionen unterst\u00fctzen willst, musst du sicherstellen, dass die Tests in CI f\u00fcr alle von dir unterst\u00fctzten PHP-Versionen ausgef\u00fchrt werden.<\/p>\n<p>Nat\u00fcrlich kannst du auch nur neuere Versionen unterst\u00fctzen &#8211; die Entscheidung liegt ganz bei dir.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-\">\n        <p><strong>Expertentipp von Juliette<\/strong><\/p>\n<p>Auf GitHub Actions kannst du bereits PHP 8.2 testen. So bekommst du rechtzeitig Warnungen vor neuen \u00c4nderungen in PHP, die du ber\u00fccksichtigen musst.<\/p>\n<\/aside>\n\n<p>Das Testen mit mehreren PHP-Versionen erfordert, dass du je nach PHP-Version mehrere PHPUnit-Versionen verwendest. Da PHPUnit im Laufe der Jahre mehrere \u00c4nderungen eingef\u00fchrt hat, die sich auf die Art und Weise auswirken, wie Tests geschrieben werden, kann dieser Teil knifflig sein.<\/p>\n<p>Um dies zu umgehen, kannst du die <a href=\"https:\/\/github.com\/Yoast\/PHPUnit-Polyfills\" target=\"_blank\" rel=\"noopener noreferrer\">PHPUnit Polyfills<\/a> verwenden (geschrieben von Juliette und gesponsert von <a href=\"https:\/\/kinsta.com\/partners\/yoast\/\">Yoast<\/a>). Damit kannst du Tests schreiben, die offiziell nicht von PHPUnit 9 unterst\u00fctzt werden (und daher auf PHP 8.x laufen k\u00f6nnen). Die Polyfills sorgen dann daf\u00fcr, dass deine Tests in PHPUnit 4.x bis 9.x und mit PHP 5.4 bis PHP 8.1 (ab sofort) funktionieren.[\/notice]<\/p>\n<p>Jetzt, wo die Tests laufen, musst du im n\u00e4chsten Schritt sicherstellen, dass die in den Tests gefundenen Probleme behoben werden.<\/p>\n<h4>Code-Abdeckung<\/h4>\n<p>Die Durchf\u00fchrung dieser Tests ist der zuverl\u00e4ssigste Weg, um versions\u00fcbergreifende Inkompatibilit\u00e4ten zu finden.<\/p>\n<p>Achte dabei auf die <em>Codeabdeckung <\/em>deiner Tests:<\/p>\n<ul>\n<li>Angenommen, du hast eine Funktion A, f\u00fcr die du einen Test geschrieben hast, und die Funktion A ruft die Funktionen B, C und D als Teil der Logik der Funktion auf.<\/li>\n<li>Der Test f\u00fcr die Funktion A wurde geschrieben, um die Logik der Funktion A zu testen, aber er wird auch die Funktionen B, C und D w\u00e4hrend des Tests aufrufen. F\u00fcr die Funktionen B, C und D testest du dann in der Regel nur den &#8222;gl\u00fccklichen Weg&#8220; &#8211; die Situation, in der alles gut l\u00e4uft &#8211; und somit sind auch diese Funktionen noch nicht vollst\u00e4ndig getestet, obwohl (ein Teil) des Codes in diesen Funktionen w\u00e4hrend der Pr\u00fcfung von Funktion A ausgef\u00fchrt wird.<\/li>\n<li>Gib f\u00fcr jeden deiner Tests an, welcher Code gerade getestet wird. Das tust du, indem du jedem Test ein <a href=\"https:\/\/phpunit.readthedocs.io\/en\/9.5\/code-coverage-analysis.html#specifying-covered-code-parts\" target=\"_blank\" rel=\"noopener noreferrer\">@covers<\/a> gibst. Auf diese Weise werden B, C und D bei der Berechnung der Codeabdeckung nicht &#8222;mitgez\u00e4hlt&#8220; und du kannst sehen, welcher Teil deines Codes von den Tests abgedeckt wird.<\/li>\n<\/ul>\n<p>Oft schreiben und testen Entwickler &#8211; manchmal sogar unbewusst &#8211; f\u00fcr den &#8222;gl\u00fccklichen Weg&#8220; In diesen F\u00e4llen muss auch getestet werden, was passiert, wenn unerwartete Daten an eine Funktion \u00fcbergeben werden. Es reicht <strong>nicht aus, nur mit erwarteten Werten\/Typen<\/strong> zu testen.<\/p>\n\n<p>Der zweite Teil des obigen Zitats wird oft vergessen, obwohl er vielleicht noch wichtiger ist als der erste Teil. Was passiert, wenn du einen falschen Typ \u00fcbergibst? Bekommst du eine Fehlermeldung? Oder wird die Variable ganz normal mit der Funktion weitergegeben? Was ist, wenn ein unerwarteter Wert an die Funktion \u00fcbergeben wird?<\/p>\n<p>Teste deine Funktionen unbedingt mit unerwarteten Variablen, Typen und Werten. Nur dann kannst du dich auf deine Tests verlassen, um Probleme zu finden, die eine neue PHP-Version verursachen k\u00f6nnte.<\/p>\n<h4>PHP wird immer strikter<\/h4>\n<p>PHP wird immer pr\u00e4ziser (strikter), was die Behandlung von &#8222;Typen&#8220; f\u00fcr PHP-eigene Funktionen und Dinge wie dynamische Eigenschaften angeht. Diese \u00c4nderungen sollen Entwicklern helfen, fehlerfreien Code (oder zumindest Code mit weniger Fehlern) zu erstellen. Dies kann jedoch eine ziemliche H\u00fcrde f\u00fcr bereits bestehenden Code darstellen, der auf der Grundlage der &#8222;alten&#8220; Grunds\u00e4tze von PHP geschrieben wurde.<\/p>\n<p>Aufgrund dieses Strebens nach hilfreicheren Fehlermeldungen in PHP wird die Anpassung von bestehendem Code an neue PHP-Versionen immer zeitaufw\u00e4ndiger. Die Anpassung von Code, der mit PHP 5.6 funktionierte, an PHP 7.0 nahm in den meisten F\u00e4llen nur einen Bruchteil der Zeit in Anspruch, verglichen mit der Anpassung von Code von PHP 7.0 an PHP 8.1. Und das, obwohl PHP 7.0 eine &#8222;Major&#8220;-Version war, w\u00e4hrend PHP 8.1 eine &#8222;Minor&#8220;-Version ist<\/p>\n<p>In vielen F\u00e4llen ist das Testen immer noch die einzige zuverl\u00e4ssige Methode, um festzustellen, was ge\u00e4ndert werden muss, um eine neue Version zu unterst\u00fctzen.<\/p>\n<p>Unit-Tests sind mit verschiedenen Tools m\u00f6glich, z. B:<\/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>Viele dieser Tools basieren auf oder in Verbindung mit PHPUnit.<\/p>\n<p>Letztlich ist es egal, welche Tools du verwendest. Das Wichtigste ist, dass du testest und die Tests auf neuen PHP-Versionen zum Laufen bringst. Dieser Schritt kann manchmal sehr knifflig sein, aber zum Gl\u00fcck gibt es daf\u00fcr, wie bereits erw\u00e4hnt, Tools wie die <a href=\"https:\/\/github.com\/Yoast\/PHPUnit-Polyfills\" target=\"_blank\" rel=\"noopener noreferrer\">PHPUnit Polyfills<\/a>.<\/p>\n<h3>Integrationstests<\/h3>\n<p>Integrationstests sind der n\u00e4chste Schritt, den wir nach der statischen Analyse und den Unit-Tests durchf\u00fchren werden. Bei einem Integrationstest werden reale Situationen in einem gr\u00f6\u00dferen Kontext als nur einer &#8222;Codeeinheit&#8220; getestet Dazu geh\u00f6ren Tests mit einer aktiven (Test-)Datenbank oder Tests mit einer externen API, um nur zwei Beispiele zu nennen.<\/p>\n<p>Wenn du also den Code eines Plugins oder Themes im Kontext von WordPress testest und eine reale Version verwendest, handelt es sich per Definition um Integrationstests.<\/p>\n<p>WP Test Utils (ebenfalls von Juliette geschrieben und von Yoast gesponsert) ist ein hervorragendes Tool f\u00fcr Integrationstests. WP Test Utils bietet Werkzeuge zum Schreiben von Integrations- und Unit-Tests, bei denen WordPress mithilfe von <a href=\"https:\/\/github.com\/Brain-WP\/BrainMonkey\" target=\"_blank\" rel=\"noopener noreferrer\">Brainmonkey<\/a> und <a href=\"http:\/\/docs.mockery.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Mockery<\/a> &#8222;nachgebildet&#8220; wird, wobei h\u00e4ufig verwendete WordPress-Funktionen &#8222;vorget\u00e4uscht&#8220; werden, damit du deinen eigenen Code und nicht den WordPress-Code testest.<\/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 auf GitHub\" width=\"911\" height=\"648\"><figcaption id=\"caption-attachment-147877\" class=\"wp-caption-text\">WP Test Utilities auf GitHub<\/figcaption><\/figure>\n<p>Integrationstests mit WordPress sind eine kompliziertere Angelegenheit, weil sie die Integration mit WordPress und der WordPress-Testsuite erfordern. Je nachdem, welche WordPress-Versionen ein Plugin oder Theme unterst\u00fctzt, musst du ber\u00fccksichtigen, welche PHPUnit-Versionen von WordPress selbst unterst\u00fctzt werden, um die Tests mit verschiedenen PHP-Versionen durchzuf\u00fchren.<\/p>\n<p>WordPress 5.6 bis 5.8 verwendet zum Beispiel <a href=\"https:\/\/make.wordpress.org\/core\/handbook\/references\/phpunit-compatibility-and-wordpress-versions\/\" target=\"_blank\" rel=\"noopener noreferrer\">PHPUnit 5 bis 7<\/a>, um <a href=\"https:\/\/make.wordpress.org\/core\/handbook\/references\/php-compatibility-and-wordpress-versions\/\" target=\"_blank\" rel=\"noopener noreferrer\">PHP 5.6 bis PHP 8.0<\/a> zu testen, aber seit WordPress 5.9 verwendet WordPress selbst auch PHPUnit Polyfills f\u00fcr eine breitere Unterst\u00fctzung. WP Test Utils dient als Br\u00fccke, um all diese Unterschiede zu \u00fcberwinden.<\/p>\n<p>Willst du mehr dar\u00fcber erfahren, wie du Integrationstests mit mehreren verschiedenen WordPress-Versionen, einschlie\u00dflich WordPress 5.9 und h\u00f6her, durchf\u00fchren kannst? Dann <a href=\"https:\/\/make.wordpress.org\/core\/2021\/09\/27\/changes-to-the-wordpress-core-php-test-suite\/\" target=\"_blank\" rel=\"noopener noreferrer\">lies auf der WordPress-Website dar\u00fcber<\/a> mehr.<\/p>\n<h3>Manuelle Tests<\/h3>\n<p>Nachdem du die Unit-Tests und Integrationstests durchgef\u00fchrt und alle gefundenen Probleme behoben hast, ist es an der Zeit, manuelle Tests durchzuf\u00fchren. Deine Website l\u00e4uft und dein eigener Code funktioniert, aber du verwendest auch Plugins A, B und C. Wei\u00dft du, ob diese Plugins kompatibel sind?<\/p>\n<p>Frag zum Beispiel bei den Autoren des Plugins nach, ob sie angeben, dass es mit PHP 8.x kompatibel ist. Die Frage ist dann nat\u00fcrlich, wie das Plugin getestet wurde. Oft lautet die Antwort: in Isolation. Die Funktionen des Plugins wurden in der Regel nur in Verbindung mit WordPress getestet, ohne andere aktive Plugins. Und selbst wenn andere Plugins in diesen Tests verwendet wurden, ist die Wahrscheinlichkeit gro\u00df, dass nicht alle von <em>dir<\/em> verwendeten Plugins Teil der Tests waren.<\/p>\n<p>Ein Beispiel: Eine WordPress-Website mit 3 Plugins (A, B und C). Es ist m\u00f6glich, dass Plugin B zum Beispiel \u00fcber einen Filter einen falschen Variablentyp zur\u00fcckgibt, mit dem Plugin C, das denselben Filter verwendet, arbeiten m\u00f6chte. Das kann dann zu einem fatalen Fehler f\u00fchren, weil der Typ nicht mehr dem erwarteten entspricht. Plugin C wird dann als Schuldiger f\u00fcr die Fehlermeldung angesehen, obwohl Plugin B der eigentliche \u00dcbelt\u00e4ter ist.<\/p>\n<p>Plugin-Interoperabilit\u00e4t &#8211; Unvertr\u00e4glichkeiten sind unm\u00f6glich zu entdecken, wenn man isoliert testet. Je mehr Plugins aktiv sind, desto wahrscheinlicher ist es, dass etwas schief geht. Es w\u00e4re zum Beispiel sehr n\u00fctzlich, Seitenanfragen von einer Live-Website an eine Staging-Umgebung (mit aktivierter Fehlerprotokollierung) weiterzuleiten, um herauszufinden, was tats\u00e4chlich schief l\u00e4uft.<\/p>\n<p>Bei dieser Art von Problem sieht der Website-Betreiber in der Regel nur eine Meldung, dass ein Fehler beim zuletzt ausgef\u00fchrten Code (in diesem Fall von Plugin C) aufgetreten ist, obwohl Plugin C nicht unbedingt die Ursache des Problems ist.<\/p>\n<p>In den meisten F\u00e4llen ist viel manuelle Arbeit und eine geh\u00f6rige Portion Muskelkraft erforderlich, um diese Probleme zu erkennen und zu beheben. Dies <em>k\u00f6nnte <\/em>mit Hilfe von End-to-End-Tests automatisiert werden, aber wir sehen nicht, dass dies in WordPress h\u00e4ufig geschieht.<\/p>\n<h4>Testverf\u00fcgbarkeit f\u00fcr genutzte Plugins<\/h4>\n<p>F\u00fcr Entwickler und Entwicklungsteams: Akzeptiere Code nur, wenn Tests verf\u00fcgbar sind. Auf diese Weise stellst du sicher, dass weniger manuelle Tests erforderlich sind, was dir viel Zeit spart.<\/p>\n<p>Hinterfrage die Teststrategie, wenn du ein kommerzielles Plugin oder Theme kaufen willst. Auf diese Weise schaffen wir gemeinsam ein Bewusstsein unter den Entwicklern\/Entwicklungsteams in der WordPress-Gemeinschaft, damit das Testen einen h\u00f6heren Stellenwert erh\u00e4lt, und wir alle profitieren davon.<\/p>\n<p>Testen wird oft &#8211; zu Unrecht &#8211; als Kostenfaktor angesehen, obwohl es in Wirklichkeit Geld spart. Die zus\u00e4tzliche Investition, die f\u00fcr das Schreiben von Tests erforderlich ist, zahlt sich in Form von deutlich weniger Fehlermeldungen und weniger Zeitaufwand f\u00fcr die Behebung von Fehlern aus. Au\u00dferdem k\u00f6nnen mit automatisierten Softwaretests Erweiterungen und \u00c4nderungen schneller durchgef\u00fchrt werden, weil die Tests schnell best\u00e4tigen k\u00f6nnen, dass die bestehenden Funktionen weiterhin funktionieren.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-\">\n        <p><strong>Expertentipp von Juliette<\/strong><\/p>\n<p>Wenn du anfangen willst, neuen Code zu schreiben:<\/p>\n<ol>\n<li>Schreibe zun\u00e4chst auf, was eine Funktion tun soll und mit welcher Logik. Schreibe dies als Kommentar oder eine Reihe von Kommentaren.<\/li>\n<li>Schreibe die Tests. Versuche, auch die Randf\u00e4lle zu ber\u00fccksichtigen.<\/li>\n<li>Erst dann schreibst du den Code.<\/li>\n<\/ol>\n<p>Von der urspr\u00fcnglichen Logik, die du in den Kommentaren beschrieben hast, wird die H\u00e4lfte verschwunden sein, weil sie durch Code ersetzt wurde. Lass den Rest der Kommentare einfach stehen, denn sie k\u00f6nnen dir helfen, die Logik sp\u00e4ter wieder zu verstehen, wenn du dir deinen Code eine Weile nicht angesehen hast<\/p>\n<\/aside>\n\n\n<h2>Die Rolle von WordPress-Hosts und PHP 8.x<\/h2>\n<p>F\u00fcr den durchschnittlichen Website-Betreiber ist eine Anleitung von deinem Hoster sehr w\u00fcnschenswert. Denke an Folgendes:<\/p>\n<ul>\n<li>Dokumentation und Updates f\u00fcr Kunden, die wissen, dass WordPress Core, Plugins und\/oder Themes (in manchen F\u00e4llen) nicht PHP-kompatibel sind<\/li>\n<li>M\u00f6glichkeiten zum Testen (z. B. <a href=\"https:\/\/kinsta.com\/de\/wordpress-hosting\/staging\/\">mit einer Staging-Umgebung arbeiten<\/a>)<\/li>\n<li>Methoden zur Fehlermeldung und Kontaktaufnahme mit dem Support<\/li>\n<\/ul>\n<p>Dies kommt auch dem Webhoster zugute, da sich Websitebetreiber\/innen bei Problemen oft an ihn wenden. Bei einer Umstellung auf PHP 8.0, 8.1, oder 8.2 ist der Website-Betreiber f\u00fcr m\u00f6gliche Probleme verantwortlich, und je mehr Informationen er hat, um sich richtig auf die Umstellung vorzubereiten, desto besser.<\/p>\n<p>PHP 8.1 oder 8.2 den Kunden als Webhoster zur Verf\u00fcgung zu stellen, ist eine Sache, aber dabei muss sichergestellt werden, dass die Kunden darauf aufmerksam gemacht werden, dass Probleme auftreten k\u00f6nnen. Es wird empfohlen, deine Website in einer Staging-Umgebung mit einer anderen Version als der Live-Version zu testen. (Die Auswahl der PHP-Versionen ist <a href=\"https:\/\/kinsta.com\/de\/changelog\/php-8\/\">bei Kinsta standardm\u00e4\u00dfig verf\u00fcgbar<\/a>.)<\/p>\n<h2>Mindest-PHP-Version f\u00fcr WordPress<\/h2>\n<p>\u00dcber 15 % aller Websites verwenden derzeit die PHP-Version 7.0 oder niedriger. Das geht aus den <a href=\"https:\/\/wordpress.org\/about\/stats\/\" target=\"_blank\" rel=\"noopener noreferrer\">offiziellen WordPress-Statistiken<\/a> hervor. Etwa 83% aller WordPress-Websites verwenden derzeit die PHP-Version 7.4 oder niedriger. Bitte beachte, dass alles, was kleiner oder gleich der Version 8.0 ist, derzeit <a href=\"https:\/\/www.php.net\/supported-versions\" target=\"_blank\" rel=\"noopener noreferrer\">nicht mehr von PHP unterst\u00fctzt<\/a> wird. Die Verwendung von End-of-Life-Versionen von PHP kann zu Problemen f\u00fchren, weil keine Sicherheitsupdates mehr ver\u00f6ffentlicht werden.<\/p>\n<p>Um Probleme zu vermeiden, ist es wichtig, dass die Betreiber von WordPress-Websites \u00fcber die Mindest-PHP-Version informiert sind, mit der ihre Website sicher betrieben werden kann. Website-Betreiber\/innen k\u00f6nnen ihrerseits die PHP-Version selbst \u00e4ndern <a href=\"https:\/\/kinsta.com\/de\/blog\/wie-man-php-in-wordpress-aktualisiert\/\">(bei Kinsta f\u00fcr alle Pakete m\u00f6glich<\/a>) oder ihren Hoster bitten, die Website auf eine neuere PHP-Version zu aktualisieren. In extremen F\u00e4llen kannst du zu einem Hoster wechseln, der diese neueren Versionen unterst\u00fctzt.<\/p>\n<p>Da WordPress nur eine <a href=\"https:\/\/wordpress.org\/about\/requirements\/\" target=\"_blank\" rel=\"noopener noreferrer\">Mindestversion von 7.4<\/a> ben\u00f6tigt, gibt es f\u00fcr viele Hoster und Website-Betreiber keine ausreichende Motivation, ihre Websites zu aktualisieren. Und das, obwohl PHP 7.4 im <a href=\"https:\/\/www.php.net\/eol.php\" target=\"_blank\" rel=\"noopener noreferrer\">November 2022<\/a> das Ende seiner Lebensdauer erreicht hat.<\/p>\n<p>Sollte WordPress die Mindest-PHP-Version jemals erh\u00f6hen, k\u00f6nnte dies bedeuten, dass viele Websites nicht mehr mit einem Update auf die neueste WordPress-Version kompatibel sind. Allerdings werden f\u00fcr diese veralteten Versionen noch eine ganze Weile Sicherheitsupdates ver\u00f6ffentlicht.<\/p>\n<h2>Zusammenfassung<\/h2>\n<p>Um f\u00fcr deine Website auf PHP 8.0 oder h\u00f6her umzusteigen, musst du oder dein\/e Entwickler\/in mehrere Schritte durchf\u00fchren. Wichtige Schritte sind:<\/p>\n<ul>\n<li>Statische Analyse<\/li>\n<li>Unit-Tests<\/li>\n<li>Integrationstests<\/li>\n<li>Manuelles Testen<\/li>\n<\/ul>\n<p>Wenn du auf PHP 8.x umsteigst, musst du sicherstellen, dass <em>alles<\/em> richtig getestet wurde. Nur so kannst du garantieren, dass deine Website auch mit einer neueren PHP-Version ordnungsgem\u00e4\u00df, schnell und sicher l\u00e4uft.<\/p>\n<p>Wir danken Juliette herzlich f\u00fcr die Mitarbeit an diesem Artikel und f\u00fcr ihre Arbeit an den erw\u00e4hnten Tools!<\/p>\n<p><em>Das Foto von Juliette wurde von Jip Moors aufgenommen und mit Genehmigung verwendet.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eine WordPress-Website, ein Plugin oder ein Theme auf eine neue PHP-Version zu aktualisieren, ist eine Aufgabe, die regelm\u00e4\u00dfig wiederkehrt. Aber wie kannst du das so effizient &#8230;<\/p>\n","protected":false},"author":139,"featured_media":59877,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[959,971],"class_list":["post-59876","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-php-lernen","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>Umstieg auf PHP 8.x in vier Schritten - Ein Interview mit Juliette Reinders Folmer - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Erfahre, was f\u00fcr einen reibungslosen \u00dcbergang zu PHP 8.x f\u00fcr deine WordPress-Website, dein Plugin oder dein Theme n\u00f6tig ist, und erhalte eine Roadmap.\" \/>\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\/umsteigen-auf-php-8\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Umstieg auf PHP 8.x in vier Schritten - Ein Interview mit Juliette Reinders Folmer\" \/>\n<meta property=\"og:description\" content=\"Erfahre, was f\u00fcr einen reibungslosen \u00dcbergang zu PHP 8.x f\u00fcr deine WordPress-Website, dein Plugin oder dein Theme n\u00f6tig ist, und erhalte eine Roadmap.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/de\/blog\/umsteigen-auf-php-8\/\" \/>\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=\"2023-03-07T10:38:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-28T09:51:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/03\/Juliette_Reinders_Folmer_image.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=\"Marcel Bootsman\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Erfahre, was f\u00fcr einen reibungslosen \u00dcbergang zu PHP 8.x f\u00fcr deine WordPress-Website, dein Plugin oder dein Theme n\u00f6tig ist, und erhalte eine Roadmap.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/03\/Juliette_Reinders_Folmer_image.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=\"Marcel Bootsman\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"17\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/umsteigen-auf-php-8\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/umsteigen-auf-php-8\/\"},\"author\":{\"name\":\"Marcel Bootsman\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/d8f086a7911078001ff0e6c05d42b5c7\"},\"headline\":\"Umstieg auf PHP 8.x in vier Schritten &#8211; Ein Interview mit Juliette Reinders Folmer\",\"datePublished\":\"2023-03-07T10:38:30+00:00\",\"dateModified\":\"2023-08-28T09:51:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/umsteigen-auf-php-8\/\"},\"wordCount\":3842,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/umsteigen-auf-php-8\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/03\/Juliette_Reinders_Folmer_image.png\",\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/umsteigen-auf-php-8\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/umsteigen-auf-php-8\/\",\"url\":\"https:\/\/kinsta.com\/de\/blog\/umsteigen-auf-php-8\/\",\"name\":\"Umstieg auf PHP 8.x in vier Schritten - Ein Interview mit Juliette Reinders Folmer - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/umsteigen-auf-php-8\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/umsteigen-auf-php-8\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/03\/Juliette_Reinders_Folmer_image.png\",\"datePublished\":\"2023-03-07T10:38:30+00:00\",\"dateModified\":\"2023-08-28T09:51:16+00:00\",\"description\":\"Erfahre, was f\u00fcr einen reibungslosen \u00dcbergang zu PHP 8.x f\u00fcr deine WordPress-Website, dein Plugin oder dein Theme n\u00f6tig ist, und erhalte eine Roadmap.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/umsteigen-auf-php-8\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/umsteigen-auf-php-8\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/umsteigen-auf-php-8\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/03\/Juliette_Reinders_Folmer_image.png\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/03\/Juliette_Reinders_Folmer_image.png\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/umsteigen-auf-php-8\/#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\":\"Umstieg auf PHP 8.x in vier Schritten &#8211; Ein Interview mit Juliette Reinders Folmer\"}]},{\"@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\/d8f086a7911078001ff0e6c05d42b5c7\",\"name\":\"Marcel Bootsman\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/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\/de\/blog\/author\/marcelbootsman\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Umstieg auf PHP 8.x in vier Schritten - Ein Interview mit Juliette Reinders Folmer - Kinsta\u00ae","description":"Erfahre, was f\u00fcr einen reibungslosen \u00dcbergang zu PHP 8.x f\u00fcr deine WordPress-Website, dein Plugin oder dein Theme n\u00f6tig ist, und erhalte eine Roadmap.","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\/umsteigen-auf-php-8\/","og_locale":"de_DE","og_type":"article","og_title":"Umstieg auf PHP 8.x in vier Schritten - Ein Interview mit Juliette Reinders Folmer","og_description":"Erfahre, was f\u00fcr einen reibungslosen \u00dcbergang zu PHP 8.x f\u00fcr deine WordPress-Website, dein Plugin oder dein Theme n\u00f6tig ist, und erhalte eine Roadmap.","og_url":"https:\/\/kinsta.com\/de\/blog\/umsteigen-auf-php-8\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","article_published_time":"2023-03-07T10:38:30+00:00","article_modified_time":"2023-08-28T09:51:16+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/03\/Juliette_Reinders_Folmer_image.png","type":"image\/png"}],"author":"Marcel Bootsman","twitter_card":"summary_large_image","twitter_description":"Erfahre, was f\u00fcr einen reibungslosen \u00dcbergang zu PHP 8.x f\u00fcr deine WordPress-Website, dein Plugin oder dein Theme n\u00f6tig ist, und erhalte eine Roadmap.","twitter_image":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/03\/Juliette_Reinders_Folmer_image.png","twitter_creator":"@Kinsta_DE","twitter_site":"@Kinsta_DE","twitter_misc":{"Verfasst von":"Marcel Bootsman","Gesch\u00e4tzte Lesezeit":"17\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/de\/blog\/umsteigen-auf-php-8\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/blog\/umsteigen-auf-php-8\/"},"author":{"name":"Marcel Bootsman","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/d8f086a7911078001ff0e6c05d42b5c7"},"headline":"Umstieg auf PHP 8.x in vier Schritten &#8211; Ein Interview mit Juliette Reinders Folmer","datePublished":"2023-03-07T10:38:30+00:00","dateModified":"2023-08-28T09:51:16+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/umsteigen-auf-php-8\/"},"wordCount":3842,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/umsteigen-auf-php-8\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/03\/Juliette_Reinders_Folmer_image.png","inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/de\/blog\/umsteigen-auf-php-8\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/de\/blog\/umsteigen-auf-php-8\/","url":"https:\/\/kinsta.com\/de\/blog\/umsteigen-auf-php-8\/","name":"Umstieg auf PHP 8.x in vier Schritten - Ein Interview mit Juliette Reinders Folmer - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/umsteigen-auf-php-8\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/umsteigen-auf-php-8\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/03\/Juliette_Reinders_Folmer_image.png","datePublished":"2023-03-07T10:38:30+00:00","dateModified":"2023-08-28T09:51:16+00:00","description":"Erfahre, was f\u00fcr einen reibungslosen \u00dcbergang zu PHP 8.x f\u00fcr deine WordPress-Website, dein Plugin oder dein Theme n\u00f6tig ist, und erhalte eine Roadmap.","breadcrumb":{"@id":"https:\/\/kinsta.com\/de\/blog\/umsteigen-auf-php-8\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/de\/blog\/umsteigen-auf-php-8\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/blog\/umsteigen-auf-php-8\/#primaryimage","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/03\/Juliette_Reinders_Folmer_image.png","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/03\/Juliette_Reinders_Folmer_image.png","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/de\/blog\/umsteigen-auf-php-8\/#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":"Umstieg auf PHP 8.x in vier Schritten &#8211; Ein Interview mit Juliette Reinders Folmer"}]},{"@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\/d8f086a7911078001ff0e6c05d42b5c7","name":"Marcel Bootsman","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/#\/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\/de\/blog\/author\/marcelbootsman\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/59876","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\/139"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/comments?post=59876"}],"version-history":[{"count":11,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/59876\/revisions"}],"predecessor-version":[{"id":62768,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/59876\/revisions\/62768"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/59876\/translations\/en"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/59876\/translations\/nl"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/59876\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/59876\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/59876\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/59876\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/59876\/translations\/jp"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/59876\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/59876\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/59876\/translations\/dk"},{"href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/59876\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media\/59877"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media?parent=59876"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/tags?post=59876"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/topic?post=59876"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}