Waldhimbeeren

PHP 8.3 und das MyOOS Projekt

PHP 8.3 ist die neueste Version von PHP, die einige neue Funktionen und Änderungen enthält. In diesem Blogbeitrag möchte ich auf die wichtigen Änderungen von PHP 8.3 hinweisen und Empfehlungen für MyOOS Anwender geben.

26. November 2023 endet der Service von PHP 8.0

Die nächste PHP-Version, die das Ende ihres Lebenszyklus erreicht, ist PHP 8.0. Diese Version wurde am 26. November 2020 veröffentlicht und erhielt bis zum 26. November 2022 aktive Unterstützung. Seitdem erhält sie nur noch Sicherheitsunterstützung bis zum 26. November 2023. Nach diesem Datum wird PHP 8.0 nicht mehr unterstützt und sollte nicht mehr verwendet werden, da sie möglicherweise ungeschützten Sicherheitslücken ausgesetzt ist.

Um deine Website auf dem neuesten Stand zu halten und sicher zu machen, solltest du deine PHP-Version regelmäßig aktualisieren und prüfen, ob alle Plugins und Themes damit kompatibel sind. Die aktuellste PHP-Version ist PHP 8.2, die am 8. Dezember 2022 veröffentlicht wurde und bis zum 8. Dezember 2024 aktive Unterstützung erhält. Die nächste geplante PHP-Version ist PHP 8.3, die am 23. November 2023 veröffentlicht werden soll.

Ich hoffe, dass dir diese Informationen helfen, die Lebenszyklen der verschiedenen PHP-Versionen zu verstehen und zu planen.

23. November 2023 kommt PHP 8.3

Laut der offiziellen PHP-Website ist das geplante Veröffentlichungsdatum für PHP 8.3 der 23. November 2023. Dies kann sich jedoch je nach dem Fortschritt der Entwicklung noch um wenige Tage ändern. PHP 8.3 wird einige neue Funktionen und Änderungen enthalten, wie z.B. typisierte Klassenkonstanten, eine neue json_validate-Funktion, dynamische Klassenkonstanten- und Enum-Mitgliederabfragen und mehr. Du kannst die vollständige Liste der neuen Funktionen und Änderungen auf der PHP.Watch-Website oder auf der PHP-Wiki-Seite einsehen.

Die Migration auf die neue PHP Version ist wie Weihnachten und kommt für die PHP Anwender:innen immer total überraschend.

Was sind die wichtigsten Änderungen von PHP 8.3

PHP 8.3 ist die neueste Version von PHP, die einige neue Funktionen und Änderungen enthält. Die wichtigsten Änderungen von PHP 8.3 sind:

  • Typisierte Klassenkonstanten: Konstanten können jetzt ihren Typ deklarieren, anstatt ihn aus dem Wert abzuleiten. Zum Beispiel kannst Du schreiben const int MAX_VALUE = 100; in einer Klasse.
  • Dynamischer Zugriff auf Klassenkonstanten und Enum-Mitglieder: Du kannst jetzt Klassenkonstanten und Enum-Mitglieder mit einer Variablen oder einem Ausdruck abrufen, anstatt sie direkt anzugeben. Zum Beispiel kannst Du schreiben $name = 'MAX_VALUE'; echo MyClass::$name; oder $color = 'RED'; echo ColorEnum::$color;.
  • json_validate () Funktion: Diese Funktion validiert eine JSON-Zeichenkette und wirft eine JsonException, wenn sie ungültig ist. Zum Beispiel kannst Du schreiben json_validate ('{"foo": "bar"}'); um zu überprüfen, ob die Zeichenkette ein gültiges JSON ist.
  • Erweiterungen für die Random-Erweiterung: Es wurden neue Methoden hinzugefügt, um Zufallsbytes aus einer Zeichenkette zu erhalten oder eine Zufallszahl zwischen 0 und 1 zu erzeugen. Zum Beispiel kannst Du schreiben \\Random\\Randomizer::getBytesFromString ('abc', 2); um zwei Zufallsbytes aus der Zeichenkette ‚abc‘ zu erhalten, oder \\Random\\Randomizer::getFloat (); um eine Zufallszahl zwischen 0 und 1 zu erhalten.
  • Fallback-Wertunterstützung für die php.ini-Umgebungsvariablensyntax: Sie können jetzt einen Fallback-Wert für eine Umgebungsvariable in der php.ini-Datei angeben, falls die Variable nicht gesetzt ist. Zum Beispiel kannst Du schreiben memory_limit = ${MEMORY_LIMIT:-128M} um den Speicherlimit auf den Wert der Umgebungsvariable MEMORY_LIMIT zu setzen, oder auf 128M, falls diese nicht gesetzt ist.
  • Lint mehr als eine Datei gleichzeitig: Der PHP CLI Lint (php -l) unterstützt jetzt das Überprüfen mehrerer Dateien auf einmal. Zum Beispiel kannst Du schreiben php -l file1.php file2.php file3.php um die Syntax aller drei Dateien zu überprüfen.

Dies sind einige der wichtigsten Änderungen von PHP 8.3. Es gibt noch viele weitere Änderungen und Verbesserungen.

Welche Vorteile hat die Verwendung von typisierten Klassenkonstanten?

Die Verwendung von typisierten Klassenkonstanten hat einige Vorteile, wie zum Beispiel:

  • Sie erhöhen die Lesbarkeit und Verständlichkeit des Codes, indem sie den Typ der Konstanten explizit angeben.
  • Sie vermeiden mögliche Fehler oder unerwartete Verhalten, die durch implizite Typumwandlungen oder falsche Annahmen über den Typ der Konstanten entstehen können.
  • Sie ermöglichen eine bessere Optimierung und Performance des Codes, da der Compiler den Typ der Konstanten zur Kompilierungszeit kennt und entsprechende Anpassungen vornehmen kann.
  • Sie erlauben eine bessere Integration mit anderen Sprachfunktionen, wie zum Beispiel Enums, die ebenfalls typisierte Konstanten verwenden.

Du kannst mehr über typisierte Klassenkonstanten in PHP 8.3 in den folgenden Quellen erfahren.

PHP: Klassenkonstanten – Manual. https://www.php.net/manual/de/language.oop5.constants.php.
Was ist Typisierung? Programmierung leicht verständlich – INZTITUT. https://inztitut.de/blog/glossar/typisierung/.

Welche anderen Funktionen wurden in PHP 8.3 hinzugefügt?

Es gibt noch viele andere Funktionen, die in PHP 8.3 hinzugefügt wurden. Hier sind einige Beispiele:

  • gc_status () gibt zusätzliche GC-Informationen zurück: Diese Funktion gibt jetzt mehr Details über den aktuellen Status des Garbage Collectors zurück, wie zum Beispiel die Anzahl der gesammelten Zyklen, die Anzahl der freigegebenen Bytes und die Anzahl der verbleibenden Wurzeln.
  • Random-Erweiterung: Neue RandomRandomizer::getBytesFromString-Methode: Diese Methode erlaubt es, eine bestimmte Anzahl von Zufallsbytes aus einer Zeichenkette zu erhalten, ohne den internen Zustand des Randomizers zu verändern. Zum Beispiel kannst Du schreiben \\Random\\Randomizer::getBytesFromString ('hello', 3); um drei Zufallsbytes aus der Zeichenkette ‚hello‘ zu erhalten.
  • Random-Erweiterung: Neue RandomRandomizer::getFloat () und nextFloat () Methoden: Diese Methoden erlauben es, eine Zufallszahl zwischen 0 und 1 zu erzeugen, die eine höhere Präzision als die bestehende rand () oder mt_rand () Funktionen hat. Zum Beispiel kannst Du schreiben \\Random\\Randomizer::getFloat (); um eine Zufallszahl zwischen 0 und 1 zu erhalten, oder \\Random\\Randomizer::nextFloat (); um eine Zufallszahl zwischen 0 und 1 zu erhalten und den internen Zustand des Randomizers zu aktualisieren.
  • Fallback-Wertunterstützung für die php.ini-Umgebungsvariablensyntax: Sie können jetzt einen Fallback-Wert für eine Umgebungsvariable in der php.ini-Datei angeben, falls die Variable nicht gesetzt ist. Zum Beispiel kannst Du schreiben memory_limit = ${MEMORY_LIMIT:-128M} um den Speicherlimit auf den Wert der Umgebungsvariable MEMORY_LIMIT zu setzen, oder auf 128M, falls diese nicht gesetzt ist.
  • Lint mehr als eine Datei gleichzeitig: Der PHP CLI Lint (php -l) unterstützt jetzt das Überprüfen mehrerer Dateien auf einmal³. Zum Beispiel kannst Du schreiben php -l file1.php file2.php file3.php um die Syntax aller drei Dateien zu überprüfen.

Dies sind einige der anderen Funktionen, die in PHP 8.3 hinzugefügt wurden. Du kannst mehr über sie in den folgenden Quellen erfahren.

PHP 8.3: What’s New and Changed • PHP.Watch. https://php.watch/versions/8.3.
PHP: Anhang – Manual. https://www.php.net/manual/de/appendices.php.
PHP 8.3 – Neue PHP Version ab November 2023 – esono.de. https://www.esono.de/blog/softwareentwicklung/php-8-3-neue-php-version-ab-november-2023_aid_1140.html.

Was ist der Garbage Collector in PHP?

Der Garbage Collector in PHP ist ein Mechanismus, der dafür sorgt, dass der Speicher, der von Variablen belegt wird, die nicht mehr benötigt werden, freigegeben wird. Der Garbage Collector arbeitet in PHP auf drei Arten:

  • Variablen fallen aus dem Gültigkeitsbereich: Wenn eine Variable aus dem Gültigkeitsbereich fällt und nirgendwo anders verwendet wird, wird sie automatisch vom Garbage Collector freigegeben. Dieser Prozess kann auch manuell durch die Verwendung von unset () ausgelöst werden.
  • Referenzzählung: PHP verwendet intern eine Referenzzählung, um zu bestimmen, wie viele Symbole auf eine Variable verweisen. Wenn die Anzahl der Symbole, die auf eine Variable verweisen, auf null fällt, ist die Variable ein Kandidat für die Freigabe am Ende der aktuellen Anfrage.
  • Garbage Collection: Wenn eine Variable Teil einer zyklischen Referenz ist, z.B. wenn $A auf $B und $B zurück auf $A verweist, kann die Variable nur vom Garbage Collector bereinigt werden. Der Garbage Collector wird ausgelöst, wenn 10.000 mögliche zyklische Objekte oder Arrays im Speicher sind und eines davon aus dem Gültigkeitsbereich fällt.

Der Garbage Collector in PHP hilft dabei, die Speichereffizienz und die Leistung der Anwendung zu verbessern. Du kannst mehr über den Garbage Collector in PHP in den folgenden Quellen erfahren

PHP: Garbage Collection – Manual. https://www.php.net/manual/en/features.gc.php.
What Is Garbage Collection in PHP And How Do You Make The … – Tideways. https://tideways.com/profiler/blog/what-is-garbage-collection-in-php-and-how-do-you-make-the-most-of-it.
PHP: session_gc – Manual. https://www.php.net/manual/en/function.session-gc.php.
Garbage Management System using PHP and MySQL – PHPGurukul. https://phpgurukul.com/garbage-management-system-using-php-and-mysql/.

Wie kann ich den Garbage Collector in PHP optimieren?

Um den Garbage Collector in PHP zu optimieren, musst Du einige Faktoren berücksichtigen, wie zum Beispiel:

  • Die Anzahl der zyklischen Referenzen in Deinem Code: Je mehr zyklische Referenzen Du hast, desto mehr Arbeit muss der Garbage Collector leisten, um sie zu finden und zu bereinigen. Du kannst versuchen, zyklische Referenzen zu vermeiden oder zu reduzieren, indem Du unset () verwendest oder schwache Referenzen verwendest.
  • Die Häufigkeit des Auslösens des Garbage Collectors: Der Garbage Collector wird standardmäßig in jeder Anfrage aktiviert, aber Du kannst ihn mit den Funktionen gc_enable () und gc_disable () ein- und ausschalten. Du kannst auch die Funktion gc_collect_cycles () aufrufen, um die Sammlung von zyklischen Referenzen explizit auszulösen. Die optimale Strategie ist es, den Garbage Collector zu aktivieren, wenn er viele zyklische Referenzen bereinigen kann (hohe Effizienz), und ihn zu deaktivieren, wenn er nur wenige findet (niedrige Effizienz).
  • Die Auswirkungen des Garbage Collectors auf die Leistung: Der Garbage Collector kann sowohl die Leistung verbessern als auch verschlechtern, je nachdem, wie viel Speicher er freigibt und wie viel Zeit er dafür benötigt. Der Garbage Collector kann die Leistung verbessern, indem er den Speicherverbrauch reduziert und somit weniger Speicherzuweisungen und -freigaben erforderlich sind. Der Garbage Collector kann die Leistung verschlechtern, indem er eine Laufzeitverzögerung verursacht, wenn er seine Bereinigung durchführt.

Um diese Faktoren zu messen und zu analysieren, kannst Du eine kleine PHP-Erweiterung namens garbage_stats verwenden. Diese Erweiterung ermöglicht es Dir, Statistiken über den Garbage Collector zu erhalten, wie zum Beispiel:

  • Die Anzahl der gesammelten Zyklen
  • Die Anzahl der freigegebenen Bytes
  • Die Anzahl der verbleibenden Wurzeln
  • Die Zeitdauer für jede Bereinigung
  • Die Effizienz des Garbage Collectors

Mit diesen Informationen kannst Du entscheiden, ob Sie den Garbage Collector aktivieren oder deaktivieren müssen oder ob Sie Ihren Code anpassen müssen, um weniger zyklische Referenzen zu erzeugen.

Welche anderen Änderungen wurden in PHP 8.3 vorgenommen?

PHP 8.3 ist eine geplante Version von PHP, die noch nicht veröffentlicht wurde. Es gibt noch keine offizielle Ankündigung oder Dokumentation über die Änderungen, die in PHP 8.3 vorgenommen werden sollen. Allerdings gibt es einige Vorschläge und Diskussionen, die auf der offiziellen Wiki-Seite von PHP zu finden sind. Diese Vorschläge sind jedoch nicht endgültig und können sich jederzeit ändern.

Wie kann ich die Random-Erweiterung von PHP 8.3 verwenden?

Die Random-Erweiterung ist eine neue Erweiterung für PHP 8.3, die verschiedene Funktionen zur Erzeugung von Zufallszahlen bietet. Sie können diese Erweiterung verwenden, um:

  • Zufallsbytes aus einer Zeichenkette zu erhalten, indem Sie die Methode \Random\Randomizer::getBytesFromString verwenden¹². Zum Beispiel kannst Du schreiben $bytes = \\Random\\Randomizer::getBytesFromString('Hallo', 2); um zwei Zufallsbytes aus der Zeichenkette ‚Hallo‘ zu erhalten.
  • Eine Zufallszahl zwischen 0 und 1 zu erzeugen, indem Sie die Methoden \Random\Randomizer::getFloat oder \Random\Randomizer::nextFloat verwenden¹². Zum Beispiel kannst Du schreiben $float = \\Random\\Randomizer::getFloat(); um eine Zufallszahl zwischen 0 und 1 zu erhalten, ohne den internen Zustand des Randomizers zu verändern, oder $float = \\Random\\Randomizer::nextFloat(); um eine Zufallszahl zwischen 0 und 1 zu erhalten und den internen Zustand des Randomizers zu aktualisieren.
  • Einen Zufallsgenerator auszuwählen, der Ihren Anforderungen an Geschwindigkeit, Qualität und Sicherheit entspricht, indem Sie eine der verfügbaren Klassen unter dem Namespace \Random\Engine verwenden¹². Zum Beispiel kannst Du schreiben $randomizer = new \\Random\\Engine\\Mt19937(); um einen Randomizer zu erstellen, der den Mersenne-Twister-Algorithmus verwendet, oder $randomizer = new \\Random\\Engine\\Secure(); um einen Randomizer zu erstellen, der kryptografisch sichere Zufallszahlen erzeugt.
  • Granulare Ausnahmen und Fehler zu behandeln, die bei der Verwendung der Random-Erweiterung auftreten können, indem Sie die neuen Klassen unter dem Namespace \Random\Exception verwenden¹². Zum Beispiel kannst Du schreiben try { $bytes = \\Random\\Randomizer::getBytesFromString('Hallo', -1); } catch (\\Random\\Exception\\InvalidLengthException $e) { echo $e->getMessage(); } um eine Ausnahme zu fangen, die ausgelöst wird, wenn die Länge der angeforderten Bytes negativ ist.

Dies sind einige Möglichkeiten, wie Sie die Random-Erweiterung von PHP 8.3 verwenden können.

Wann soll ich auf die neue PHP Version updaten?

Laut der offiziellen PHP-Website ist das geplante Veröffentlichungsdatum für PHP 8.3 der 23. November 2023.

Um auf die neue PHP-Version zu aktualisieren, musst Du einige Schritte beachten:

  • Prüfe, ob Dein Provider/Hoster PHP 8.3 unterstützt oder anbietet. Wenn nicht, musst Du möglicherweise den Provider wechseln oder einen verlängerten Service (Extended Service) in Anspruch nehmen.
  • Mache ein Backup Deiner Website und Deiner Datenbank, bevor Du etwas änderst. Dies ist wichtig, falls etwas schief geht oder deine Website nicht mehr funktioniert.
  • Teste Deine Website mit PHP 8.3 auf einer lokalen oder einer Staging-Umgebung. Überprüfe, ob deine Website korrekt läuft und ob es keine Fehler oder Inkompatibilitäten gibt. Wenn es Probleme gibt, musst Du möglicherweise Deinen Code anpassen oder Deine Plugins oder Themes aktualisieren.
  • Wenn alles gut aussieht, kannst du PHP 8.3 auf deiner Live-Website aktivieren. Dies kannst du in den meisten Fällen in den PHP-Einstellungen Deines Providers/Hosters tun. Wenn Dein Provider/Hoster dies nicht anbietet, musst Du möglicherweise PHP manuell installieren oder konfigurieren.
  • Überprüfe erneut Deine Website und stelle sicher, dass alles wie erwartet funktioniert.

Dies sind die Schritte, um auf die neue PHP-Version zu aktualisieren. Es ist empfehlenswert, dies so bald wie möglich zu tun, um von den Vorteilen von PHP 8.3 zu profitieren und Deine Website sicher und stabil zu halten. Wenn Du Hilfe benötigst oder Fragen hast, wende Dich an unser Support Forum.

Was sind die Vorteile von PHP 8.3 gegenüber früheren Versionen?

PHP 8.3 ist die neueste Version von PHP, die einige neue Funktionen und Änderungen enthält. Die Vorteile von PHP 8.3 gegenüber früheren Versionen sind:

  • PHP 8.3 bietet eine bessere Leistung und Geschwindigkeit, dank der Optimierungen des JIT-Compilers, der den Code in Maschinensprache übersetzt und ausführt.
  • PHP 8.3 ermöglicht eine klarere und konsistentere Syntax, dank der Einführung von typisierten Klassenkonstanten, dynamischem Zugriff auf Klassenkonstanten und Enum-Mitglieder, Fallback-Wertunterstützung für die php.ini-Umgebungsvariablensyntax und Lint mehr als eine Datei gleichzeitig.
  • PHP 8.3 bietet eine einfachere und sicherere Validierung von JSON-Zeichenketten, dank der neuen Funktion json_validate (), die eine JsonException wirft, wenn die Zeichenkette ungültig ist¹².
  • PHP 8.3 bietet mehr Möglichkeiten zur Erzeugung von Zufallszahlen, dank der Erweiterungen für die Random-Erweiterung, die neue Methoden hinzufügt, um Zufallsbytes aus einer Zeichenkette zu erhalten oder eine Zufallszahl zwischen 0 und 1 zu erzeugen.
  • PHP 8.3 bietet mehr Kompatibilität mit anderen Sprachfunktionen, wie zum Beispiel Enums, die ebenfalls typisierte Konstanten verwenden.

Dies sind einige der Vorteile von PHP 8.3 gegenüber früheren Versionen.

MyOOS Service-Angebot

Wenn du Hilfe, bei dem Update von PHP benötigst, kann dir das MyOOS Projekt kostengünstig helfen.

Auch bei der Wartung und der individuellen WordPress Plugin-Entwicklung können wir Dir helfen.

Wir möchten Dich gerne kennenlernen.

Solltest du Fragen und Anregungen haben, spreche uns gerne an. Wir sind für dich da.

Deine Zufriedenheit ist unser Erfolg!

Was uns am Herzen liegt? Natürlich deine Zufriedenheit! Wir möchten, dass du dein nächstes Projekt mit uns planst und uns deinen Freunden weiterempfiehlst.

Wir freuen uns auf Deine E-Mail info@r23.de.

Das könnte dich auch interessieren.

Wir gründen eine Lerngemeinschaft.

Jeden Tag eine Stunde programmieren lernen

Die “100 Days of Code” Herausforderung ist eine ultimative Programmier-Herausforderung, bei der man sich dazu verpflichtet, 100 Tage lang jeden Tag zu programmieren. In diesem Blogartikel möchte ich euch erzählen, wie ich erfolgreich an dieser Herausforderung teilgenommen habe und welche Erfahrungen ich dabei gemacht habe. Die ultimative Programmier-Herausforderung: Erfahre, wie ich erfolgreich 100 Tage lang an der ‘100 Days of Code’ teilgenommen

Bei der Änderung der PHP Version kann es passieren, dass die verwendeten Plugins und Themes nicht mehr zur PHP Version kompatible sind. In diesem Blogbeitrag zeige ich Wege auf, wie man WordPress-Plugins und Themes auf Kompatibilität mit der PHP-Version testen kann. Wie kann ich meine WordPress-Plugins und Themes auf Kompatibilität mit der PHP-Version testen?

Waldbilder für das MyOOS Projekt

Eine Bildserie von Waldmotiven für einen Blog für Open-Source-Entwickler:innen kann eine interessante und ansprechende Bildsprache sein.

Waldhimbeeren

Bildquelle: Wald-Himbeeren, Ralf Zschemisch, F22, 0.5 Sekunde, 24mm, ISO 100, 05.10.2023

Die Welt der Open Source Entwicklung ist wie ein dichter Wald, in dem viele Bäume und Pflanzen wachsen. Jeder Baum steht für ein Projekt, das von einer Gemeinschaft von Entwickler:innen gepflegt und verbessert wird. Die Pflanzen sind die Abhängigkeiten, die die Projekte miteinander verbinden und ihnen ermöglichen, zu funktionieren. Der Wald ist voller Leben und Vielfalt, aber auch voller Herausforderungen und Gefahren.

Als Web Entwickler:in bist du wie ein:e Forscher:in, der:die diesen Wald erkundet und navigiert. Du suchst nach den besten Bäumen für deine Bedürfnisse, lernst von den Erfahrungen anderer Entwickler:innen und trägst zu den Projekten bei, die du nutzt oder schätzt. Du bist Teil einer globalen Gemeinschaft, die sich gegenseitig unterstützt und voneinander lernt.

In diesem Blog möchte ich dir einige der spannendsten und nützlichsten Open Source Projekte für Web Entwickler:innen vorstellen, die ich in diesem Wald gefunden habe. Ich werde dir zeigen, wie du sie verwenden kannst, wie du zu ihnen beitragen kannst und was sie so besonders macht. Ich hoffe, dass du dich inspiriert fühlst, dich in diesen Wald zu wagen und deine eigenen Entdeckungen zu machen.


Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert