यह अच्छी तरह से प्रलेखित है कि PHP5 ओओपी objects are passed by reference डिफ़ॉल्ट रूप से। यदि यह डिफ़ॉल्ट रूप से है, तो ऐसा लगता है कि कोई संदर्भ के साथ प्रतिलिपि बनाने का कोई डिफ़ॉल्ट तरीका नहीं है, कैसे ??संदर्भ के बिना किसी वस्तु की एक प्रति कैसे बनाएं?
function refObj($object){
foreach($object as &$o){
$o = 'this will change to ' . $o;
}
return $object;
}
$obj = new StdClass;
$obj->x = 'x';
$obj->y = 'y';
$x = $obj;
print_r($x)
// object(stdClass)#1 (3) {
// ["x"]=> string(1) "x"
// ["y"]=> string(1) "y"
// }
// $obj = refObj($obj); // no need to do this because
refObj($obj); // $obj is passed by reference
print_r($x)
// object(stdClass)#1 (3) {
// ["x"]=> string(1) "this will change to x"
// ["y"]=> string(1) "this will change to y"
// }
इस बिंदु पर मैं $x
चाहते मूल $obj
होने के लिए होगा, लेकिन निश्चित रूप से यह नहीं है। वहाँ ऐसा करने या मैं कुछ like this
खुशी है कि यह सहायक था। lonesomeday '__clone()' जादू विधि के बारे में बहुत अच्छा बिंदु बनाता है कुछ वर्ग भी कार्यान्वित हो सकते हैं, जो ध्यान देने योग्य है। – Treffynnon