Sobes.tech
Junior — Middle

Wird die Methode __set() automatisch aufgerufen, wenn wir einer Eigenschaft eines Klassenobjekts einen Wert zuweisen?

sobes.tech KI

Antwort von AI

Die Methode __set() in PHP wird automatisch nur aufgerufen, wenn Sie versuchen, einer nicht vorhandenen oder nicht zugänglichen (z.B. privat oder geschützt) Eigenschaft des Objekts einen Wert zuzuweisen. Wenn die Eigenschaft deklariert und zugänglich ist, wird __set() nicht aufgerufen und die Zuweisung erfolgt direkt.

Beispiel:

class Example {
    private $data = [];

    public function __set($name, $value) {
        echo "__set aufgerufen für die Eigenschaft '$name' mit dem Wert '$value'\n";
        $this->data[$name] = $value;
    }

    public $existingProp;
}

$obj = new Example();
$obj->existingProp = 123; // __set wird nicht aufgerufen
$obj->newProp = 456;      // __set wird aufgerufen

In diesem Beispiel erfolgt die Zuweisung $obj->existingProp = 123; direkt, während $obj->newProp = 456; die Methode __set() aufruft, da newProp nicht in der Klasse deklariert ist.