Sobes.tech
Junior — Middle

Kas __set() meetod kutsutakse automaatselt, kui me omistame väärtuse klassi objekti omadusele?

sobes.tech AI

Vastus AI-lt

Meetod __set() PHP-s kutsutakse automaatselt ainult siis, kui proovite määrata väärtust mitteolevatele või mittejuurdepääsetavatele (näiteks privaatsetele või kaitstud) objekti omadustele. Kui omadus on deklareeritud ja juurdepääsetav, siis __set() ei kutsuta ja määramine toimub otse.

Näide:

class Example {
    private $data = [];

    public function __set($name, $value) {
        echo "__set kutsutud omadusele '$name' väärtusega '$value'\n";
        $this->data[$name] = $value;
    }

    public $existingProp;
}

$obj = new Example();
$obj->existingProp = 123; // __set ei kutsuta
$obj->newProp = 456;      // __set kutsutakse

Selles näites toimub määramine $obj->existingProp = 123; otse, samas kui $obj->newProp = 456; kutsub välja meetodi __set(), kuna newProp ei ole klassis deklareeritud.