Junior — Middle
Da li će se automatski pozvati metoda __set() kada dodeljujemo vrednost svojstvu objekta klase?
sobes.tech АИ
Одговор од АИ
Metoda __set() u PHP se automatski poziva samo u slučaju kada pokušavate da dodelite vrednost nepostojećoj ili nedostupnoj (npr. privatnoj ili zaštićenoj) svojstvu objekta. Ako je svojstvo deklarisano i dostupno, __set() neće biti pozvan, i dodeljivanje će se desiti direktno.
Primer:
class Example {
private $data = [];
public function __set($name, $value) {
echo "__set pozvan za svojstvo '$name' sa vrednošću '$value'\n";
$this->data[$name] = $value;
}
public $existingProp;
}
$obj = new Example();
$obj->existingProp = 123; // __set se ne poziva
$obj->newProp = 456; // __set se poziva
U ovom primeru, dodeljivanje $obj->existingProp = 123; se vrši direktno, dok $obj->newProp = 456; poziva metodu __set(), jer newProp nije deklarisana u klasi.