मैजिक मेथड __set

मैजिक मेथड __set ऑटोमैटिकली तब कॉल होता है जब किसी ऐसी प्रॉपर्टी को वैल्यू असाइन करने की कोशिश की जाती है जो मौजूद नहीं है या करंट कॉन्टेक्स्ट में एक्सेसिबल नहीं है। यह मेथड दो पैरामीटर लेती है: प्रॉपर्टी का नाम और वह वैल्यू जिसे असाइन करने की कोशिश की जा रही है।

सिंटैक्स

phppublic function __set(string $name, mixed $value): void

उदाहरण

आइए एक क्लास बनाते हैं जो नॉन-एक्सिस्टेंट प्रॉपर्टीज सेट करने की कोशिशों को इंटरसेप्ट करने के लिए __set का उपयोग करेगी:

php<?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());
?>

कोड एक्ज़ीक्यूशन का रिजल्ट:

phpArray
(
  [email] => test@example.com
  [age] => 25
)

उदाहरण

डेटा को सेट करने से पहले वैलिडेशन के लिए __set का उपयोग:

php<?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();
?>

कोड एक्ज़ीक्यूशन का रिजल्ट:

php100

यह भी देखें

  • मैजिक मेथड __get,
    जो अनएक्सेसिबल प्रॉपर्टीज को पढ़ने की कोशिशों को इंटरसेप्ट करती है
  • मैजिक मेथड __isset,
    जो प्रॉपर्टीज के अस्तित्व की जांच को इंटरसेप्ट करती है