Sobes.tech
Junior — Middle

La méthode __set() sera-t-elle appelée automatiquement lorsque nous attribuons une valeur à une propriété d'un objet de la classe?

sobes.tech IA

Réponse de l'IA

La méthode __set() en PHP est appelée automatiquement uniquement si vous essayez d'assigner une valeur à une propriété inexistante ou inaccessible (par exemple, privée ou protégée) de l'objet. Si la propriété est déclarée et accessible, alors __set() ne sera pas appelé et l'affectation se fera directement.

Exemple:

class Example {
    private $data = [];

    public function __set($name, $value) {
        echo "__set appelé pour la propriété '$name' avec la valeur '$value'\n";
        $this->data[$name] = $value;
    }

    public $existingProp;
}

$obj = new Example();
$obj->existingProp = 123; // __set n'est pas appelé
$obj->newProp = 456;      // __set est appelé

Dans cet exemple, l'affectation $obj->existingProp = 123; se fait directement, tandis que $obj->newProp = 456; appelle la méthode __set(), car newProp n'est pas déclarée dans la classe.