Sobes.tech
Junior — Middle

Il metodo __set() verrà chiamato automaticamente quando assegniamo un valore a una proprietà di un oggetto della classe?

sobes.tech AI

Risposta dell'AI

Il metodo __set() in PHP viene chiamato automaticamente solo nel caso in cui si tenti di assegnare un valore a una proprietà dell'oggetto che non esiste o che non è accessibile (ad esempio, privata o protetta). Se la proprietà è dichiarata e accessibile, allora __set() non verrà chiamato e l'assegnazione avverrà direttamente.

Esempio:

class Example {
    private $data = [];

    public function __set($name, $value) {
        echo "__set chiamato per la proprietà '$name' con il valore '$value'\n";
        $this->data[$name] = $value;
    }

    public $existingProp;
}

$obj = new Example();
$obj->existingProp = 123; // __set non viene chiamato
$obj->newProp = 456;      // __set viene chiamato

In questo esempio, l'assegnazione $obj->existingProp = 123; avviene direttamente, mentre $obj->newProp = 456; chiama il metodo __set(), poiché newProp non è dichiarata nella classe.