class Config {
private array $data = [];
// Вызывается при записи в несуществующее/недоступное свойство
public function __set(string $name, mixed $value): void {
$this->data[$name] = $value;
}
// Вызывается при чтении несуществующего/недоступного свойства
public function __get(string $name): mixed {
return $this->data[$name] ?? null;
}
public function __isset(string $name): bool {
return isset($this->data[$name]);
}
}
$cfg = new Config();
$cfg->host = 'localhost'; // __set()
echo $cfg->host; // __get()Используются для: dynamic properties, прокси-объектов, ORM. Злоупотребление усложняет отладку и IDE-подсказки.