__clone मेथड

ऑपरेटर clone का उपयोग करते समय मेथड __clone स्वचालित रूप से कॉल होता है। यह ऑब्जेक्ट की कॉपी करने के लिए अपना स्वयं का लॉजिक परिभाषित करने की अनुमति देता है। डिफ़ॉल्ट रूप से, PHP ऑब्जेक्ट के सभी प्रॉपर्टीज़ की शैलो कॉपी करता है। मेथड __clone तब उपयोगी होता है जब डीप कॉपी लागू करने की आवश्यकता हो या क्लोनिंग के दौरान व्यवहार बदलने की आवश्यकता हो।

सिंटैक्स

phppublic function __clone(): void

उदाहरण

आइए एक ऑब्जेक्ट की बेसिक क्लोनिंग लागू करें:

php<?php
  class User {
    public $name;
    
    public function __construct($name) {
      $this->name = $name;
    }
    
    public function __clone() {
      echo 'ऑब्जेक्ट क्लोन किया गया';
    }
  }
  
  $user1 = new User('John');
  $user2 = clone $user1;
?>

कोड चलाने का परिणाम:

php'ऑब्जेक्ट क्लोन किया गया'

उदाहरण

आइए नेस्टेड ऑब्जेक्ट्स के साथ ऑब्जेक्ट की डीप कॉपी लागू करें:

php<?php
  class Address {
    public $city;
    
    public function __construct($city) {
      $this->city = $city;
    }
  }
  
  class User {
    public $name;
    public $address;
    
    public function __construct($name, $city) {
      $this->name = $name;
      $this->address = new Address($city);
    }
    
    public function __clone() {
      $this->address = clone $this->address;
    }
  }
  
  $user1 = new User('John', 'New York');
  $user2 = clone $user1;
  $user2->address->city = 'Boston';
  
  echo $user1->address->city;
?>

कोड चलाने का परिणाम:

php'New York'

उदाहरण

आइए क्लोनिंग के दौरान एक यूनिक आइडेंटिफायर जोड़ें:

php<?php
  class Product {
    public $id;
    public $name;
    
    public function __construct($name) {
      $this->id = uniqid();
      $this->name = $name;
    }
    
    public function __clone() {
      $this->id = uniqid();
    }
  }
  
  $product1 = new Product('Laptop');
  $product2 = clone $product1;
  
  echo $product1->id . ' ' . $product2->id;
?>

कोड चलाने का परिणाम (उदाहरण):

php'5f1a2b3c 5f1a2b3d'

यह भी देखें

  • मेथड __construct,
    जो ऑब्जेक्ट का कंस्ट्रक्टर है