Junior — Middle
Czy metoda __set() będzie wywoływana automatycznie, gdy przypisujemy wartość do właściwości obiektu klasy?
sobes.tech AI
Odpowiedź od AI
Metoda __set() w PHP jest wywoływana automatycznie tylko wtedy, gdy próbujesz przypisać wartość do nieistniejącej lub niedostępnej (np. prywatnej lub chronionej) właściwości obiektu. Jeśli właściwość jest zadeklarowana i dostępna, to __set() nie zostanie wywołane, a przypisanie nastąpi bezpośrednio.
Przykład:
class Example {
private $data = [];
public function __set($name, $value) {
echo "__set wywołany dla właściwości '$name' z wartością '$value'\n";
$this->data[$name] = $value;
}
public $existingProp;
}
$obj = new Example();
$obj->existingProp = 123; // __set nie jest wywoływane
$obj->newProp = 456; // __set jest wywoływane
W tym przykładzie przypisanie $obj->existingProp = 123; odbywa się bezpośrednio, natomiast $obj->newProp = 456; wywołuje metodę __set(), ponieważ newProp nie jest zadeklarowane w klasie.