Когда вызывается __set()? Когда нужен __get()?

Ответ
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-подсказки.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.