• Support
my.cyonWebmailBestellen
Dies ist eine Beta-Version der neuen cyon-Website
Einige Funktionen funktionieren möglicherweise nicht wie erwartet.

PHP 8.3 – Performance-Verbesserungen, neue Funktionen und Inkompatibilitäten

Philipp Zeder

Philipp Zeder in Entwicklung & Performance

Veröffentlicht am 21. Feb. 2024

0Kommentare

Inhaltsverzeichnis

  • Performance-Verbesserungen
  • Die 3 besten neuen Funktionen in PHP 8.3
  • Inkompatibilitäten zu älteren PHP-Versionen

PHP 8.3 ist das neueste Update für die beliebte Scriptsprache und Ende 2023 offiziell erschienen. Ab sofort kannst du PHP 8.3 auf deinem cyon-Hosting nutzen. Neben Leistungsverbesserungen, Fehlerbehebungen und allgemeiner Aufräumarbeiten bringt PHP 8.3 viele neue Funktionen mit sich. Wir werfen einen Blick auf die wichtigsten Neuerungen.

Titelbild «PHP 8.3 – Neue Funktionen, Performance-Verbesserungen und Inkompatibilitäten»

Performance-Verbesserungen

Die PHP Group meldet einige Verbesserungen in Sachen Performance. So wurden einige DOM-Operationen verbessert, die damit weniger Ausführungszeit für die gleichen Aufgaben benötigen. Ausserdem ist die Fehlerprüfung für file()-Flags nun bis zu 7 % schneller als noch mit PHP 8.2. Schlussendlich gibt es auch Verbesserungen in der Standard PHP Library (SPL): Die Klasse RecursiveDirectoryIterator verursacht nun weniger I/O, wenn über ein Verzeichnis geloopt wird.

Die Website OnlinePHP.io meldet in ihren Benchmarks einen leichten Geschwindigkeitsgewinn von PHP 8.2 zu PHP 8.3. Im Vergleich zu früheren Versionen sind die Geschwindigkeitsverbesserungen allerdings nicht mehr ganz so gross. Das lässt darauf schliessen, dass PHP mittlerweile schon Nahe am Optimum ist. Im Zusammenspiel mit den Neuerungen bleibt ein Wechsel auf die neueste PHP-Version weiterhin attraktiv.

Die 3 besten neuen Funktionen in PHP 8.3

Neben den Performance-Verbesserungen bringt PHP 8.3 einen ganzen Strauss an neuen Funktionen mit. Unsere 3 Favoriten:

Das neue #[\Override]-Attribut

Setzt du das neue Attribut bei einer Methode ein, stellt PHP nun sicher, dass diese Methode in einer Elternklasse oder einem implementierten Interface vorhanden ist. Das Attribut legt fest, dass das Überschreiben der Methode absichtlich erfolgt ist. Das erleichtert ein Refactoring, da ein Fehler geworfen wird, falls die überschriebene Methode in der Elternklasse nicht vorhanden ist.

Vor PHP 8.3:

<code>use PHPUnit\Framework\TestCase;

final class MyTest extends TestCase {
    protected $logFile;

    protected function setUp(): void {
        $this->logFile = fopen('/tmp/logfile', 'w');
    }

    protected function taerDown(): void {
        fclose($this->logFile);
        unlink('/tmp/logfile');
    }
}

// The log file will never be removed, because the
// method name was mistyped (taerDown vs tearDown).
</code>

Ab PHP 8.3:

<code>use PHPUnit\Framework\TestCase;

final class MyTest extends TestCase {
    protected $logFile;

    protected function setUp(): void {
        $this->logFile = fopen('/tmp/logfile', 'w');
    }

    #[\Override]
    protected function taerDown(): void {
        fclose($this->logFile);
        unlink('/tmp/logfile');
    }
}

// Fatal error: MyTest::taerDown() has #[\Override] attribute,
// but no matching parent method exists
</code>

Neue Funktion json_validate()

Dank der neuen Funktion json_validate() prüfst du die Syntax von JSON viel effizienter als noch mit json_decode():

Vor PHP 8.3:

<code>function json_validate(string $string): bool {
    json_decode($string);

    return json_last_error() === JSON_ERROR_NONE;
}

var_dump(json_validate('{ "test": { "foo": "bar" } }')); // true
</code>

Ab PHP 8.3:

<code>var_dump(json_validate('{ "test": { "foo": "bar" } }')); // true
</code>

Neue Methode Randomizer::getBytesFromString()

Bereits PHP 8.2 brachte eine komplett neue Funktion, mit der du zufällige Zahlen generieren kannst. Mit PHP 8.3 werden die Möglichkeiten mit Randomizer noch grösser. Die neue Methode Randomizer::getBytesFromString() hilft dir bei der Generierung von Zufallszahlen und -zeichenfolgen. Um zum Beispiel zufällige Domainnamen zu erzeugen sind nun deutlich weniger Zeilen Code nötig (Beispiel von php.net):

Vor PHP 8.3:

<code>// This function needs to be manually implemented.
function getBytesFromString(string $string, int $length) {
    $stringLength = strlen($string);

    $result = '';
    for ($i = 0; $i < $length; $i++) {
        // random_int is not seedable for testing, but secure.
        $result .= $string[random_int(0, $stringLength - 1)];
    }

    return $result;
}

$randomDomain = sprintf(
    "%s.example.com",
    getBytesFromString(
        'abcdefghijklmnopqrstuvwxyz0123456789',
        16,
    ),
);

echo $randomDomain;
</code>

Ab PHP 8.3:

<code>// A \Random\Engine may be passed for seeding,
// the default is the secure engine.
$randomizer = new \Random\Randomizer();

$randomDomain = sprintf(
    "%s.example.com",
    $randomizer->getBytesFromString(
        'abcdefghijklmnopqrstuvwxyz0123456789',
        16,
    ),
);

echo $randomDomain;
</code>

Selbstverständlich sind das nicht alle neuen Funktionen von PHP 8.3. Alle oben erwähnten Code-Beispiele und eine gute Übersicht über alle Neuerungen findest du auf der Release-Seite der PHP Group zur neuen Version.

Inkompatibilitäten zu älteren PHP-Versionen

Es ist wichtig, die Inkompatibilitäten zu berücksichtigen, wenn du von PHP 8.2 auf 8.3 aktualisierst. Überprüfe deine Anwendungen sorgfältig, um sicherzustellen, dass sie auch mit PHP 8.3 reibungslos funktionieren. Einen Leitfaden für den Wechsel von PHP 8.2 zu 8.3 sowie alle weiteren wichtigen Informationen findest du im passenden Migrations-Guide der PHP Group und auf der Release-Seite im Abschnitt «Veraltete Funktionalität und inkompatible Änderungen zu vorherigen PHP Versionen».

Tipp 💡

Für dein cyon-Hosting kannst du die PHP-Version bequem pro Verzeichnis per Mausklick ändern und deine Applikationen unkompliziert testen: PHP-Version eines Verzeichnisses ändern

PHP 8.3 bringt die beliebte Scriptsprache wieder ein Stückchen weiter. Hast du die Version bereits getestet? Was sind aus deiner Sicht die spannendsten Neuerungen? Wir freuen uns über deinen Kommentar.

Titelbild: Ben Griffiths/Unsplash & eigene Bearbeitung

Bereit für den Wechsel?

Wechsle jetzt zu cyon für ein souveräneres und nachhaltigeres Internet.

Jetzt gratis umziehen

Beteilige dich an der Diskussion

Bisher keine Kommentare

Wir machen das Internet zu einem besseren Ort

4.8 / 5
Swiss Label
Swiss Hosting

Hosting

  • Webhosting
  • Webhosting Pro
  • Sitebuilder
  • https:// für alle
  • Umzugsservice

Server

  • Managed Server
  • Agency Server

Domains

  • Domains
  • Domain transferieren
  • Alle Domains

Support

  • Support Center
  • E-Mail Zauberer
  • my.cyon
  • Webmail

Über uns

  • Warum cyon
  • Team
  • Jobs
  • Geschichte
  • Partner*innen
  • Engagement
  • Nachhaltigkeit
  • Infrastruktur
  • Blog

Rechtliches

  • AGB
  • Datenschutzerklärung
  • Impressum
Swiss Label
Swiss Hosting
Folge uns
Newsletter

Schliesse dich 4.000 anderen an (+20 in der letzten Woche neu beigetreten)