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.