Sobes.tech
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.