Start · Sprachen · PHP · Referenz · PropertyHookType

PropertyHookType

Enum

Definiert den Typ eines Property-Hooks (<code>get</code> oder <code>set</code>) für die Verwendung in der Reflection-API.

seit PHP 8.4.0 Kategorie: oop

Signatur

enum PropertyHookType: string

Beschreibung

PropertyHookType ist ein Backed Enum (String-Backed), der die beiden möglichen Hook-Typen für PHP-Properties ab Version 8.4 repräsentiert: get und set. Property-Hooks ermöglichen es, benutzerdefinierte Logik beim Lesen oder Schreiben einer Objekt-Eigenschaft auszuführen, ohne klassische Getter- und Setter-Methoden definieren zu müssen.

Dieser Enum wird primär in der Reflection-API verwendet, etwa bei ReflectionProperty::getHook() oder ReflectionProperty::hasHook(), um gezielt nach einem bestimmten Hook-Typ zu fragen oder den Typ eines vorhandenen Hooks zu identifizieren.

Der Enum besitzt zwei Fälle: PropertyHookType::Get steht für den Lese-Hook (get), der ausgeführt wird, wenn die Property gelesen wird. PropertyHookType::Set steht für den Schreib-Hook (set), der beim Zuweisen eines neuen Werts aktiv wird.

  • PropertyHookType::Get – entspricht dem String-Wert 'get'
  • PropertyHookType::Set – entspricht dem String-Wert 'set'

Beispiele

Property-Hooks definieren und per Reflection auslesen

<?php
class Temperature
{
    public float $celsius {
        get => $this->celsius;
        set(float $value) {
            if ($value < -273.15) {
                throw new \ValueError('Temperatur unter dem absoluten Nullpunkt.');
            }
            $this->celsius = $value;
        }
    }

    public function __construct(float $celsius = 0.0)
    {
        $this->celsius = $celsius;
    }
}

$ref = new ReflectionProperty(Temperature::class, 'celsius');

if ($ref->hasHook(PropertyHookType::Get)) {
    echo 'Get-Hook vorhanden.' . PHP_EOL;
}

if ($ref->hasHook(PropertyHookType::Set)) {
    echo 'Set-Hook vorhanden.' . PHP_EOL;
}

$setHook = $ref->getHook(PropertyHookType::Set);
echo 'Set-Hook-Name: ' . $setHook->name . PHP_EOL;
Get-Hook vorhanden. Set-Hook vorhanden. Set-Hook-Name: set

PropertyHookType als Backed Enum verwenden

<?php
// Backed-Enum-Werte abrufen
echo PropertyHookType::Get->value . PHP_EOL;  // 'get'
echo PropertyHookType::Set->value . PHP_EOL;  // 'set'

// Aus String wiederherstellen
$hookType = PropertyHookType::from('set');
var_dump($hookType === PropertyHookType::Set); // bool(true)

// Alle Fälle auflisten
foreach (PropertyHookType::cases() as $case) {
    echo $case->name . ' => ' . $case->value . PHP_EOL;
}
get set bool(true) Get => get Set => set

// Wichtig · Fallstricke

PropertyHookType ist ein interner PHP-Enum, der nicht manuell instanziiert werden muss. Er steht ab PHP 8.4 automatisch zur Verfügung, sobald die Property-Hook-Funktion eingesetzt wird. Da es sich um einen String-Backed Enum handelt, lassen sich die Werte mit PropertyHookType::from() und PropertyHookType::tryFrom() aus einem String erzeugen, was besonders bei dynamischer Verarbeitung (z. B. Konfiguration oder Code-Generatoren) nützlich ist.

Property-Hooks sind in PHP 8.4 neu eingeführt worden und ersetzen in vielen Fällen die manuelle Definition von __get() und __set(). Beachte, dass Hooks nur für typisierte Properties erlaubt sind.