मैजिक मेथड __set
मैजिक मेथड __set ऑटोमैटिकली तब कॉल होता है जब किसी ऐसी प्रॉपर्टी को वैल्यू असाइन करने की कोशिश की जाती है जो मौजूद नहीं है या करंट कॉन्टेक्स्ट में एक्सेसिबल नहीं है। यह मेथड दो पैरामीटर लेती है: प्रॉपर्टी का नाम और वह वैल्यू जिसे असाइन करने की कोशिश की जा रही है।
सिंटैक्स
public function __set(string $name, mixed $value): void
उदाहरण
आइए एक क्लास बनाते हैं जो नॉन-एक्सिस्टेंट प्रॉपर्टीज सेट करने की कोशिशों को इंटरसेप्ट करने के लिए __set का उपयोग करेगी:
<?php
class User {
private $data = [];
public function __set($name, $value) {
$this->data[$name] = $value;
}
public function getData() {
return $this->data;
}
}
$user = new User();
$user->email = 'test@example.com';
$user->age = 25;
print_r($user->getData());
?>
कोड एक्ज़ीक्यूशन का रिजल्ट:
Array
(
[email] => test@example.com
[age] => 25
)
उदाहरण
डेटा को सेट करने से पहले वैलिडेशन के लिए __set का उपयोग:
<?php
class Product {
private $price;
public function __set($name, $value) {
if ($name === 'price') {
if (!is_numeric($value) || $value < 0) {
throw new Exception('Invalid price value');
}
$this->price = $value;
}
}
public function getPrice() {
return $this->price;
}
}
$product = new Product();
$product->price = 100;
echo $product->getPrice();
?>
कोड एक्ज़ीक्यूशन का रिजल्ट:
100