Sobes.tech
Junior — Middle

Automatik módon meghívódik a __set() metódus, amikor értéket rendelünk egy osztályobjektum tulajdonságához?

sobes.tech MI

Válasz az MI-től

A PHP __set() metódusa automatikusan csak akkor hívódik meg, ha megpróbálsz értéket rendelni egy nem létező vagy nem elérhető (például privát vagy védett) tulajdonsághoz az objektumban. Ha a tulajdonság deklarálva van és elérhető, akkor a __set() nem lesz meghívva, és a hozzárendelés közvetlenül megtörténik.

Példa:

class Example {
    private $data = [];

    public function __set($name, $value) {
        echo "__set hívva a '$name' tulajdonságért, értéke '$value'\n";
        $this->data[$name] = $value;
    }

    public $existingProp;
}

$obj = new Example();
$obj->existingProp = 123; // __set nem hívódik meg
$obj->newProp = 456;      // __set hívódik meg

Ebben a példában a $obj->existingProp = 123; közvetlenül történik, míg a $obj->newProp = 456; a __set() metódust hívja, mivel a newProp nincs deklarálva az osztályban.