Junior — Middle
Bude se automaticky volat metoda __set(), když přiřadíme hodnotu vlastnosti objektu třídy?
sobes.tech AI
Odpověď od AI
Metoda __set() v PHP se volá automaticky pouze v případě, že se pokoušíte přiřadit hodnotu neexistující nebo nedostupné (například soukromé nebo chráněné) vlastnosti objektu. Pokud je vlastnost deklarována a dostupná, __set() nebude volána a přiřazení proběhne přímo.
Příklad:
class Example {
private $data = [];
public function __set($name, $value) {
echo "__set volán pro vlastnost '$name' s hodnotou '$value'\n";
$this->data[$name] = $value;
}
public $existingProp;
}
$obj = new Example();
$obj->existingProp = 123; // __set není volán
$obj->newProp = 456; // __set je volán
V tomto příkladu se přiřazení $obj->existingProp = 123; provádí přímo, zatímco $obj->newProp = 456; volá metodu __set(), protože newProp není v třídě deklarována.