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.