By Value and By Reference in PHP: PHP में हम किसी Variable में दो तरीकों से Value Initialize कर सकते हैं। Value के रूप में व Reference के रूप में।
Value Initialization or Value Assignment
जब हम किसी Variable को Declare करते हैं, तब हम उस Variable का एक नाम Assign करते हैं जो कि Reserve होने वाले Memory Location के साथ Associate हो जाता है। इस नाम में उस Memory Location का Reference होता है। इस प्रक्रिया को हम निम्न चित्र द्वारा समझ सकते हैं:
$salary = 100; //Creates a Variable Identifier

जब उपरोक्त Statement Execute होता है, तब PHP Interpreter Memory में Space Reserve करता है, उस Space का नाम salary रखता है और salary नाम से Associated Memory Location पर Value 100 को Store कर देता है।
यानी वास्तव में यदि सही तरीके से समझें, तो उपरोक्त Statement में Variable salary में मान 100 नहीं जा रहा है, बल्कि जिस Physical Memory Location का नाम salary है, उस Memory Location पर मान 100 जा रहा है। salary तो मात्र एक नाम है और नाम में किसी तरह की Value नहीं जा सकती। यानी salary किसी Physical Memory Location का एक Reference मात्र है। दूसरे शब्दों में कहें, तो salary स्वयं Memory Location नहीं है बल्कि किसी Physical Memory Location का Pointer है।
जिस तरह से हम किसी Variable में Directly किसी Value को Initialize या Assign कर सकते हैं, उसी तरह से हम किसी Variable में किसी दूसरे Variable का मान भी Initialize या Assign कर सकते हैं। जैसेः
$salary = 100; //Creates a Variable Identifier
$commission = $salary;
जब ये दोनों Statements Interpret होते हैं, तब जिस Memory Location का नाम salary है, उस Memory Location पर Stored Memory उस Memory Locations पर जाकर Copy हो जाती है, जिस Memory Location का नाम commission है।

जब इस प्रकार से एक Variable का मान किसी दूसरे Variable की Memory Location पर Copy हो जाता है, तो इस प्रक्रिया को Value Initialization अथवा Value Assignment कहते हैं।
Reference Initialization or Reference Assignment
PHP हमें ये सुविधा भी देता है कि हम किसी Variable में किसी दूसरे Variable की Value Copy करने के बजाय उस Variable का Reference यानी Pointer Copy कर सकते हैं। जब हमें किसी Variable की Value के बजाय उसका Reference Copy करना होता है, तब हमें Reference किए जाने वाले Variable के नाम से पहले “&” Symbol का प्रयोग करना होता है। जैसेः
$salary = 100; //Creates a Variable Identifier
$commission = &$salary;
जब हम उपरोक्त प्रकार से Variable Create करते हैं, तब वास्तव में दो नहीं बल्कि केवल एक ही Memory Location Reserve होती है और एक ही Memory Location के दो नाम Create हो जाते हैं, न कि दो अलग Memory Location Reserve होती हैं। इसे हम निम्न चित्रानुसार समझ सकते हैं:

यानी जब हम किसी Variable का Reference Create करते हैं, तब वास्तव में दो अलग Variable Create नहीं होते, बल्कि एक ही Variable Create होता है और उसी एक Variable के दो नाम यानी Alias Create हो जाते हैं। फलस्वरूप यदि हम निम्न Code अनुसार किसी एक Variable का मान Change करने पर Automatically दूसरे Variable का मान भी Change हो जाता हैः
<?php $salary = 100; //Creates a Variable Identifier $commission = &$salary; print "Salary : $salary \n”; $commission = 500; print "Salary : $salary \n”; ?> //Output: Salary : 100 Salary : 500
जैसाकि उपरोक्त Code में हम देख सकते हैं कि $commission उसी Memory Location को Refer कर रहा है, जिसे $salary कर रहा है। इसलिए जब हमने पहले $salary के मान को Print किया, तो Output में Salary : 100 होता है जबकि $commission का मान बदलकर 500 कर देने पर $salary Variable का मान भी Automatically 500 हो जाता है, जो इस बात का संकेत है कि $commission व $salary दोनों समान Memory Location को ही Share कर रहे हैं। यानी दोनों एक दूसरे के Alias हैं।
PHP Programming में इस तरीके को तब उपयोग में लिया जाता है, जब हम Object Oriented Programming कर रहे होते हैं अथवा किसी Function में किसी Argument को Actual Argument की तरह Pass कर रहे होते हैं, ताकि Function द्वारा उस Variable के मान में किया जाने वाला परिवर्तन Global तरीके से Reflect हो। इस विषय में हम आगे विस्तार से जानेंगे।
साथ ही Reference Variable का प्रयोग करने की वजह से Memory की भी बचत होती है क्योंकि एक से ज्यादा Variables Create करने की जरूरत नहीं रहती जिससे Program ज्यादा तेजी से Interpret होते हैं और कम Memory Consume करते हैं।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook PHP in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
PHP in Hindi | Page: 647 | Format: PDF