Sobes.tech
Назад к вопросам
Junior — Middle
93

Будет ли автоматически вызываться метод __set(), когда мы присваиваем значение свойству объекта класса?

Ответ от нейросети

sobes.tech AI

Метод __set() в PHP вызывается автоматически только в том случае, если вы пытаетесь присвоить значение несуществующему или недоступному (например, приватному или защищённому) свойству объекта. Если свойство объявлено и доступно, то __set() не будет вызван, и присваивание произойдёт напрямую.

Пример:

class Example {
    private $data = [];

    public function __set($name, $value) {
        echo "__set вызван для свойства '$name' с значением '$value'\n";
        $this->data[$name] = $value;
    }

    public $existingProp;
}

$obj = new Example();
$obj->existingProp = 123; // __set не вызывается
$obj->newProp = 456;      // __set вызывается

В этом примере присваивание $obj->existingProp = 123; происходит напрямую, а $obj->newProp = 456; вызывает метод __set(), так как newProp не объявлено в классе.