Sobes.tech
Junior — Middle

Vai automātiski tiks izsaukta metode __set(), kad mēs piešķiram vērtību klases objekta īpašībai?

sobes.tech AI

Atbilde no AI

Metode __set() PHP automātiski tiek izsaukts tikai tad, ja mēģināt piešķirt vērtību neeksistējošai vai nepieejamai (piemēram, privātai vai aizsargātai) objekta īpašībai. Ja īpašība ir deklarēta un pieejama, tad __set() netiks izsaukts, un piešķiršana notiks tieši.

Piemērs:

class Example {
    private $data = [];

    public function __set($name, $value) {
        echo "__set izsaukts īpašībai '$name' ar vērtību '$value'\n";
        $this->data[$name] = $value;
    }

    public $existingProp;
}

$obj = new Example();
$obj->existingProp = 123; // __set netiek izsaukts
$obj->newProp = 456;      // __set tiek izsaukts

Šajā piemērā piešķiršana $obj->existingProp = 123; notiek tieši, bet $obj->newProp = 456; izsauc __set() metodi, jo newProp nav deklarēta klasē.