Sobes.tech
Junior — Middle

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

sobes.tech AI

Отговор от 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 не е декларирана в класа.