Sobes.tech
Junior — Middle

Биз класс объектисинин мүлкүнө маанини белгилегенде __set() методу автоматтык түрдө чакырылат беле?

sobes.tech AI

AIден жооп

PHP-деги __set() ыкмасы автоматтык түрдө гана чакырылат, эгер сиз объекттин бар болбогон же жеткиликтүү эмес (мисалы, жеке же корголгон) өзгөчөлүгүнө маанини белгилеп жатсаңыз. Эгер өзгөчөлүк жарыяланган жана жеткиликтүү болсо, анда __set() чакырылбайт жана белгилөө түздөн-түз болот.

Мисал:

class Example {
    private $data = [];

    public function __set($name, $value) {
        echo "__set '$name' өзгөчөлүгү үчүн чакырылды жана мааниси '$value'\n";
        $this->data[$name] = $value;
    }

    public $existingProp;
}

$obj = new Example();
$obj->existingProp = 123; // __set чакырылбайт
$obj->newProp = 456;      // __set чакырылат

Бул мисалда, $obj->existingProp = 123; түздөн-түз аткарылат, ал эми $obj->newProp = 456; __set() ыкмасын чакырат, анткени newProp класс ичинде жарыяланган эмес.