Sobes.tech
Junior — Middle

¿Se llamará automáticamente al método __set() cuando asignamos un valor a una propiedad de un objeto de la clase?

sobes.tech AI

Respuesta de la IA

El método __set() en PHP se llama automáticamente solo en el caso de que intentes asignar un valor a una propiedad del objeto que no existe o que no es accesible (por ejemplo, privada o protegida). Si la propiedad está declarada y es accesible, entonces __set() no será llamado y la asignación ocurrirá directamente.

Ejemplo:

class Example {
    private $data = [];

    public function __set($name, $value) {
        echo "__set llamado para la propiedad '$name' con el valor '$value'\n";
        $this->data[$name] = $value;
    }

    public $existingProp;
}

$obj = new Example();
$obj->existingProp = 123; // __set no se llama
$obj->newProp = 456;      // __set se llama

En este ejemplo, la asignación $obj->existingProp = 123; ocurre directamente, mientras que $obj->newProp = 456; llama al método __set(), ya que newProp no está declarado en la clase.