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.