Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> PHP

पीएचपी वस्तु क्लोनिंग

परिचय

साधारण असाइनमेंट द्वारा किसी ऑब्जेक्ट की प्रतिलिपि बनाना केवल स्मृति में एक के लिए एक और संदर्भ बनाता है। इसलिए, विशेषता में परिवर्तन मूल और डुप्लिकेट ऑब्जेक्ट दोनों में प्रतिबिंबित होते हैं। PHP में क्लोन है कीवर्ड जो ऑब्जेक्ट की उथली प्रतिलिपि बनाता है। हालाँकि, यदि मूल वस्तु में इसके गुणों में से एक के रूप में अन्य एम्बेडेड वस्तु है, तो कॉपी की गई वस्तु अभी भी उसी को संदर्भित करती है। ऑब्जेक्ट की एक ईप कॉपी बनाने के लिए, जादुई विधि __clone() कक्षा में परिभाषित करने की आवश्यकता है/

असाइनमेंट द्वारा कॉपी करें

निम्नलिखित कोड में, myclass में एड्रेस क्लास के ऑब्जेक्ट के रूप में एक विशेषता है। Myclass का एक ऑब्जेक्ट असाइनमेंट द्वारा डुप्लिकेट किया गया है। इसकी संपत्ति के मूल्य में परिवर्तन दोनों वस्तुओं में परिलक्षित होता है

उदाहरण

<?php
class address{
   var $city="Nanded";
   var $pin="431601";
   function setaddr($arg1, $arg2){
      $this->city=$arg1;
      $this->pin=$arg2;
   }
}
class myclass{
   var $name="Raja";
   var $obj;
   function setname($arg){
      $this->name=$arg;
   }
}
$obj1=new myclass();
$obj1->obj=new address();
echo "original object\n";
print_r($obj1);
$obj2=$obj1;
$obj1->setname("Ravi");
echo "after change:\n";
print_r($obj1);
print_r($obj2);
?>

आउटपुट

यह कोड निम्न आउटपुट दिखाता है

original object
myclass Object(
   [name] => Raja
   [obj] => address Object(
      [city] => Nanded
      [pin] => 431601
   )
)
after change:
original object
myclass Object(
   [name] => Ravi
   [obj] => address Object(
      [city] => Nanded
      [pin] => 431601
   )
)
copied object
myclass Object(
   [name] => Ravi
   [obj] => address Object(
      [city] => Nanded
      [pin] => 431601
   )

)

क्लोन कीवर्ड का उपयोग करना

क्लोन कीवर्ड एक उथली प्रतिलिपि बनाता है। संपत्ति के मूल्य में परिवर्तन क्लोन की गई वस्तु में प्रतिबिंबित नहीं होता है। हालाँकि, यदि एम्बेडेड ऑब्जेक्ट को संशोधित किया जाता है, तो परिवर्तन मूल और क्लोन किए गए ऑब्जेक्ट में दिखाई देते हैं

उदाहरण

<?php
class address{
   var $city="Nanded";
   var $pin="431601";
   function setaddr($arg1, $arg2){
      $this->city=$arg1;
      $this->pin=$arg2;
   }
}
class myclass{
   var $name="Raja";
   var $obj;
   function setname($arg){
      $this->name=$arg;
   }
}
$obj1=new myclass();
$obj1->obj=new address();
echo "original object:\n";
print_r($obj1);
$obj2=clone $obj1;
$obj1->setname("Ravi");
$obj1->obj->setaddr("Mumbai", "400001");
echo "after change:\n";
echo "original object:\n";
print_r($obj1);
echo "cloned object:\n";
print_r($obj2);
?>

आउटपुट

आउटपुट निम्न परिणाम दिखाता है

original object:
myclass Object(
   [name] => Raja
   [obj] => address Object(
      [city] => Nanded
      [pin] => 431601
   )

)
after change:
original object:
myclass Object(
   [name] => Ravi
   [obj] => address Object(
      [city] => Mumbai
      [pin] => 400001
   )

)
cloned object:
myclass Object(
   [name] => Raja
   [obj] => address Object(
      [city] => Mumbai
      [pin] => 400001
   )

)

__क्लोन() विधि का उपयोग करना

__क्लोन () विधि एम्बेडेड ऑब्जेक्ट का अकेला भी बनाकर एक गहरी प्रतिलिपि बनाता है

उदाहरण

<?php
class address{
   var $city="Nanded";
   var $pin="431601";
   function setaddr($arg1, $arg2){
      $this->city=$arg1;
      $this->pin=$arg2;
   }
}
class myclass{
   var $name="Raja";
   var $obj;
   function setname($arg){
      $this->name=$arg;
   }
   public function __clone() {
      $this->obj = clone $this->obj ;
   }
}
$obj1=new myclass();
$obj1->obj=new address();
echo "original object:\n";
print_r($obj1);
$obj2=clone $obj1;
$obj1->setname("Ravi");
$obj1->obj->setaddr("Mumbai", "400001");
echo "after change:\n";
echo "original object:\n";
print_r($obj1);
echo "cloned object:\n";
print_r($obj2);
?>

आउटपुट

आउटपुट निम्न परिणाम दिखाता है

original object:
myclass Object(
   [name] => Raja
   [obj] => address Object(
      [city] => Nanded
      [pin] => 431601
   )

)
after change:
original object:
myclass Object(
   [name] => Ravi
   [obj] => address Object(
      [city] => Mumbai
      [pin] => 400001
   )

)
cloned object:
myclass Object(
   [name] => Raja
   [obj] => address Object(
      [city] => Nanded
      [pin] => 431601
   )

)

  1. PHP में is_a () फ़ंक्शन

    PHP में is_a () फ़ंक्शन यह जांचता है कि क्या वस्तु इस वर्ग की है या उसके माता-पिता में से एक के रूप में यह वर्ग है। यदि ऑब्जेक्ट इस वर्ग का है या इसके माता-पिता में से एक के रूप में यह वर्ग है, तो फ़ंक्शन TRUE लौटाता है, अन्यथा FALSE। सिंटैक्स is_a(object, class) पैरामीटर ऑब्जेक्ट -परीक्षित वस्त

  1. PHP में get_class () फ़ंक्शन

    get_class () फ़ंक्शन को किसी ऑब्जेक्ट के वर्ग का नाम मिलता है। यदि वस्तु कोई वस्तु नहीं है तो यह FALSE लौटाता है। यदि किसी वर्ग के अंदर वस्तु को बाहर रखा जाता है, तो उस वर्ग का नाम वापस कर दिया जाता है। सिंटैक्स get_class(object) पैरामीटर ऑब्जेक्ट - परीक्षण की गई वस्तु। आप केस के अंदर इस पैरामीट

  1. PHP में get_object_vars () फ़ंक्शन

    get_object_var() फ़ंक्शन दिए गए ऑब्जेक्ट के गुण प्राप्त करता है। यह निर्दिष्ट वस्तु के लिए परिभाषित वस्तु गुणों की एक सहयोगी सरणी देता है। सिंटैक्स get_object_vars(object) पैरामीटर ऑब्जेक्ट - एक वस्तु उदाहरण। वापसी get_object_var() फ़ंक्शन निर्दिष्ट ऑब्जेक्ट के लिए परिभाषित ऑब्जेक्ट गुणों की ए