class User {
// Виртуальное свойство с хуками get/set
public string $fullName {
get => "$this->firstName $this->lastName";
set(string $value) {
[$this->firstName, $this->lastName] = explode(' ', $value, 2);
}
}
// Хук только для set (валидация)
public string $email {
set(string $value) {
if (!filter_var($value, FILTER_VALIDATE_EMAIL)) {
throw new InvalidArgumentException();
}
$this->email = $value;
}
}
}Property hooks заменяют getters/setters и делают API чище. Это аналог C# properties. Свойства с хуками работают с readonly, интерфейсами и абстрактными классами.