Junior — Middle
Ar automatiškai iškvies __set() metodą, kai priskiriame reikšmę klasės objekto savybei?
sobes.tech AI
Atsakymas iš AI
„__set()“ metodas PHP automatiškai kviečiamas tik tada, kai bandote priskirti reikšmę neegzistuojančiai arba neprieinamai (pavyzdžiui, privačiai arba apsaugotai) objekto savybei. Jei savybė yra deklaruota ir prieinama, tada __set() nebus kviečiamas, ir priskyrimas įvyks tiesiogiai.
Pavyzdys:
class Example {
private $data = [];
public function __set($name, $value) {
echo "__set iškviestas savybei '$name' su reikšme '$value'\n";
$this->data[$name] = $value;
}
public $existingProp;
}
$obj = new Example();
$obj->existingProp = 123; // __set nebus iškviestas
$obj->newProp = 456; // __set bus iškviestas
Šiame pavyzdyje priskyrimas $obj->existingProp = 123; vyksta tiesiogiai, o $obj->newProp = 456; iškviečia __set() metodą, nes newProp nėra deklaruota klasėje.