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ē.