PHP 8.4: Die wichtigsten Neuerungen für Unternehmen

Property Hooks, Asymmetric Visibility, neues DOM-API: Was PHP 8.4 bringt und wie die Upgrade-Strategie aussieht. Mit Framework-Kompatibilitäts-Matrix.

PHP 8.4: Die wichtigsten Neuerungen für Unternehmen

PHP 8.4 ist da - und bringt Features, die seit Jahren gewünscht wurden. Property Hooks, Asymmetric Visibility und ein verbessertes DOM-API. Hier ist, was Unternehmen wissen müssen: Was ändert sich, was wird deprecated, und wie sieht die Upgrade-Strategie aus.

Die Top-Features in PHP 8.4

1. Property Hooks

Das größte Feature: Getter und Setter direkt in der Property-Deklaration:

class User {
    public string $name {
        get => strtoupper($this->name);
        set => trim($value);
    }

    public string $email {
        set {
            if (!filter_var($value, FILTER_VALIDATE_EMAIL)) {
                throw new InvalidArgumentException('Invalid email');
            }
            $this->email = strtolower($value);
        }
    }
}

Vorteile:

  • Weniger Boilerplate-Code
  • Validation direkt bei der Property
  • Interfaces können Properties vorschreiben
  • Kompatibel mit Constructor Property Promotion

Praxis-Tipp

Property Hooks ersetzen __get/__set für die meisten Use Cases. Migration von Magic Methods wird cleaner und performanter.

2. Asymmetric Visibility

Unterschiedliche Sichtbarkeit für Lesen und Schreiben:

class BankAccount {
    // Public lesen, private schreiben
    public private(set) float $balance = 0;

    // Protected lesen, private schreiben
    protected private(set) string $accountNumber;

    public function deposit(float $amount): void {
        $this->balance += $amount; // intern änderbar
    }
}

Use Cases:

  • Immutable-ähnliches Verhalten ohne readonly
  • DTOs mit kontrollierten Änderungen
  • Value Objects mit Validierung

3. Neues DOM-API (HTML5-konform)

Endlich ein modernes DOM-API:

// Alt (DOMDocument)
$dom = new DOMDocument();
@$dom->loadHTML($html); // Unterdrückt HTML5-Warnungen

// Neu (Dom\HTMLDocument)
$dom = Dom\HTMLDocument::createFromString($html);
$element = $dom->querySelector('.my-class');
$elements = $dom->querySelectorAll('a[href]');

Verbesserungen:

  • HTML5-Parsing ohne Warnings
  • querySelector() und querySelectorAll()
  • Modernes API nach DOM Living Standard
  • Bessere Namespace-Unterstützung

4. Neue Array-Funktionen

// array_find - erstes Element das Bedingung erfüllt
$firstAdmin = array_find($users, fn($u) => $u->isAdmin());

// array_find_key - Key des ersten Matches
$key = array_find_key($users, fn($u) => $u->email === 'admin@example.com');

// array_any - mindestens ein Element erfüllt Bedingung
$hasAdmin = array_any($users, fn($u) => $u->isAdmin());

// array_all - alle Elemente erfüllen Bedingung
$allVerified = array_all($users, fn($u) => $u->isVerified());

Deprecations und Breaking Changes

Deprecated in PHP 8.4

Feature Alternative Handlungsbedarf
implode() mit Array als erstes Argument implode($glue, $array) Niedrig
Implizite nullable Types Explizites ?Type Mittel
E_STRICT Konstante Wird ignoriert Niedrig
Einige LDAP-Funktionen Neue API Nur LDAP-User

Wichtig für Legacy-Projekte

Implizite nullable Types (function foo(Type $param = null)) erzeugen jetzt Deprecation-Warnings. Ändern Sie zu ?Type $param = null.

Entfernt in PHP 8.4

  • session.sid_length und session.sid_bits_per_character INI-Settings
  • Einige veraltete Mysqli-Konstanten
  • Phar::setDefaultStub() wurde vereinfacht

Upgrade-Strategie nach PHP-Version

Von PHP 8.3 → 8.4

Risiko: Niedrig

  1. PHPStan/Psalm auf Level 6+ laufen lassen
  2. Deprecation-Warnings beheben (implizite nullable Types)
  3. Tests durchführen
  4. Upgrade durchführen

Zeitaufwand

Typischerweise 1-2 Tage für ein mittelgroßes Projekt (20-50k LOC).

Von PHP 8.1/8.2 → 8.4

Risiko: Mittel

Zusätzliche Schritte:

  • Readonly-Properties prüfen (8.1 Feature)
  • Enum-Usage überprüfen
  • Deprecations aus 8.2/8.3 beheben
  • Framework-Kompatibilität prüfen (Laravel 11+, Symfony 7+)

Von PHP 7.x/8.0 → 8.4

Risiko: Hoch - Schrittweise Migration empfohlen

  1. Erst auf PHP 8.1 migrieren (LTS-ähnlich stabil)
  2. Typed Properties und Union Types einführen
  3. Constructor Property Promotion nutzen
  4. Nach Stabilisierung auf 8.4

Mehr zur schrittweisen Migration: Legacy Modernisierung Guide

Framework-Kompatibilität

Framework PHP 8.4 Support Mindestversion
Laravel ✅ Ja Laravel 11.x
Symfony ✅ Ja Symfony 7.x
Shopware ⚠️ Ab 6.6 Shopware 6.6+
WordPress ⚠️ Teilweise 6.5+ (prüfen)
Drupal ✅ Ja Drupal 10.3+

Performance-Verbesserungen

PHP 8.4 bringt inkrementelle Performance-Verbesserungen:

  • JIT-Optimierungen: Bessere Kompilierung von häufig genutztem Code
  • Opcache: Verbesserte Preloading-Stabilität
  • Memory: Effizientere Property-Verwaltung durch Hooks

Benchmarks zeigen 2-5% Verbesserung gegenüber 8.3 in typischen Web-Workloads.

Best Practices für den Einsatz

Property Hooks sinnvoll nutzen

// ✅ Gut: Validation und Transformation
class Product {
    public float $price {
        set => max(0, $value); // Negative Preise verhindern
    }
}

// ❌ Vermeiden: Komplexe Logik in Hooks
class Order {
    public float $total {
        get {
            // Zu komplex - besser als Methode
            return $this->items->sum('price')
                + $this->shipping
                - $this->discount;
        }
    }
}

Asymmetric Visibility für DTOs

readonly class UserDTO {
    public function __construct(
        public string $name,
        public string $email,
        public private(set) ?string $internalNote = null,
    ) {}
}

Fazit: Upgrade empfohlen

PHP 8.4 ist ein solides Release mit praktischen Features:

  • Property Hooks reduzieren Boilerplate signifikant
  • Asymmetric Visibility ermöglicht sauberere APIs
  • DOM-API macht HTML-Parsing endlich angenehm
  • Breaking Changes sind minimal und gut handhabbar

Für Projekte auf PHP 8.3 ist das Upgrade unkritisch. Bei älteren Versionen empfehle ich schrittweise Migration - lesen Sie mehr über technische Schulden und wann ein Architektur-Audit sinnvoll ist.

PHP-Upgrade Unterstützung

Planen Sie ein PHP-Upgrade? Ich analysiere Ihre Codebase auf Kompatibilität und erstelle einen konkreten Upgrade-Plan.

Haben Sie ähnliche Herausforderungen?

Unterstützung bei Legacy-Modernisierung, Architektur-Entscheidungen und technischen Audits.

Kostenloses Erstgespräch
Artikel teilen: