Sobes.tech
Junior — Middle

Bir sınıf nesnesinin özelliğine değer atadığımızda __set() yöntemi otomatik olarak çağrılır mı?

sobes.tech yapay zeka

AI'dan gelen yanıt

PHP'deki __set() yöntemi, yalnızca nesnenin var olmayan veya erişilemeyen (örneğin, özel veya korumalı) bir özelliğine değer atamaya çalıştığınızda otomatik olarak çağrılır. Özellik tanımlanmış ve erişilebilir ise, __set() çağrılmaz ve atama doğrudan gerçekleşir.

Örnek:

class Example {
    private $data = [];

    public function __set($name, $value) {
        echo "__set '$name' özelliği için çağrıldı ve değeri '$value'\n";
        $this->data[$name] = $value;
    }

    public $existingProp;
}

$obj = new Example();
$obj->existingProp = 123; // __set çağrılmaz
$obj->newProp = 456;      // __set çağrılır

Bu örnekte, $obj->existingProp = 123; ataması doğrudan gerçekleşirken, $obj->newProp = 456; __set() metodunu çağırır çünkü newProp sınıfta tanımlı değildir.