Signatur
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;
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;
}
// 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.