পরিচয়
পিএইচপি-তে, অবজেক্ট ডিফল্টভাবে রেফারেন্স দ্বারা পাস করা হয়। এখানে, রেফারেন্স হল একটি উপনাম, যা দুটি ভিন্ন ভেরিয়েবলকে একই মান লিখতে দেয়। একটি অবজেক্ট ভেরিয়েবলের মান হিসাবে বস্তু নিজেই ধারণ করে না। এটিতে শুধুমাত্র একটি অবজেক্ট আইডেন্টিফায়ার রয়েছে যা ব্যবহার করে প্রকৃত বস্তুটি পাওয়া যায়। যখন একটি বস্তু আর্গুমেন্টের মাধ্যমে পাঠানো হয়, ফেরত দেওয়া হয় বা বরাদ্দ করা হয়, তখন বিভিন্ন ভেরিয়েবল উপনাম হয় না - পরিবর্তে, তারা একই বস্তুর দিকে নির্দেশ করে শনাক্তকারীর একটি অনুলিপি ধারণ করে।
উদাহরণ
PHP এর spl_object_hash() আছে ফাংশন যা একটি বস্তুর অনন্য হ্যাশ আইডি প্রদান করে। নিম্নলিখিত কোডে, দুটি অবজেক্ট ভেরিয়েবল, একই বস্তুর উল্লেখ করে একই আইডি ফেরত দেয়
উদাহরণ
<?php class test1{ public $name; } $obj1=new test1(); echo "ID of obj1: " . spl_object_hash($obj1) . "\n"; $obj2=$obj1; echo "ID of obj2: " . spl_object_hash($obj2); ?>
আউটপুট
ফলাফল উভয় ভেরিয়েবলের আইডি একই
দেখায়ID of obj1: 000000004355dda6000000006f04b1a7 ID of obj2: 000000004355dda6000000006f04b1a7
যখন আমরা একটি অবজেক্ট ভেরিয়েবলের একটি রেফারেন্স তৈরি করি, উপসর্গ এবং নাম দিয়ে, বৈশিষ্ট্যের যেকোনো পরিবর্তন স্বয়ংক্রিয়ভাবে রেফারেন্স ভেরিয়েবলে প্রতিফলিত হয়
উদাহরণ
<?php class test1{ public $name; } $obj1=new test1(); echo "ID of obj1: " . spl_object_hash($obj1) . "\n"; $obj2=&$obj1; echo "ID of obj2: " . spl_object_hash($obj2) . "\n"; $obj1->name="Amar"; echo "name: " .$obj2->name; ?>
আউটপুট
উপরের কোডটি এখন আউটপুট অনুসরণ করে নাম প্রদান করে
ID of obj1: 00000000163cf0b8000000003ad0ed93 ID of obj2: 00000000163cf0b8000000003ad0ed93 name: Amar