Sobes.tech
Junior — Middle

Da li će se automatski pozvati metoda __set() kada dodeljujemo vrednost svojstvu objekta klase?

sobes.tech АИ

Одговор од АИ

Metoda __set() u PHP se automatski poziva samo u slučaju kada pokušavate da dodelite vrednost nepostojećoj ili nedostupnoj (npr. privatnoj ili zaštićenoj) svojstvu objekta. Ako je svojstvo deklarisano i dostupno, __set() neće biti pozvan, i dodeljivanje će se desiti direktno.

Primer:

class Example {
    private $data = [];

    public function __set($name, $value) {
        echo "__set pozvan za svojstvo '$name' sa vrednošću '$value'\n";
        $this->data[$name] = $value;
    }

    public $existingProp;
}

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

U ovom primeru, dodeljivanje $obj->existingProp = 123; se vrši direktno, dok $obj->newProp = 456; poziva metodu __set(), jer newProp nije deklarisana u klasi.