Sobes.tech
Junior — Middle

Bude sa automaticky volať metóda __set(), keď priraďujeme hodnotu vlastnosti objektu triedy?

sobes.tech AI

Odpoveď od AI

Metóda __set() v PHP sa volá automaticky len v prípade, že sa pokúšate priradiť hodnotu neexistujúcej alebo nedostupnej (napríklad súkromnej alebo chránené) vlastnosti objektu. Ak je vlastnosť deklarovaná a dostupná, __set() nebude volať a priradenie prebehne priamo.

Príklad:

class Example {
    private $data = [];

    public function __set($name, $value) {
        echo "__set volaný pre vlastnosť '$name' s hodnotou '$value'\n";
        $this->data[$name] = $value;
    }

    public $existingProp;
}

$obj = new Example();
$obj->existingProp = 123; // __set sa nevolá
$obj->newProp = 456;      // __set sa volá

V tomto príklade sa priradenie $obj->existingProp = 123; vykonáva priamo, zatiaľ čo $obj->newProp = 456; volá metódu __set(), pretože newProp nie je deklarovaná v triede.