ऐसा प्रतीत होता है कि PHP में वस्तुओं को संदर्भ द्वारा पारित किया जाता है। यहां तक कि असाइनमेंट ऑपरेटर्स ऑब्जेक्ट की कॉपी बनाते हुए दिखाई नहीं देते हैं।
यहाँ एक सरल, आकस्मिक प्रमाण दिया गया है:
<?php
class A {
public $b;
}
function set_b($obj) { $obj->b = "after"; }
$a = new A();
$a->b = "before";
$c = $a; //i would especially expect this to create a copy.
set_b($a);
print $a->b; //i would expect this to show 'before'
print $c->b; //i would ESPECIALLY expect this to show 'before'
?>
दोनों प्रिंट मामलों में मुझे 'के बाद' मिल रहा है
इसलिए, मैं संदर्भ से नहीं, $ a से set_b () को कैसे पास करूं ?
(object) ((array) $objectA)
आप बेहतर प्रदर्शन के साथ एक ही वांछित परिणाम प्राप्त कर सकते हैं clone $objectA
या फिर उपयोग कर सकते हैं new stdClass
।