Call by Reference | Call by Value – PHP Function Types

Call by Reference | Call by Value – PHP Function Types: किसी भी PHP Program के हमेंशा तीन हिस्से होते हैं:

  • Input
  • Process
  • Output

किसी भी Function की Parameters List हमेंशा Calling Program से आने वाले Input को Represent करता है। Function की Body में Specify किया गया Code Function की Professing को Represent करता है जबकि Function द्वारा Return होने वाले मान को Function के Output के रूप में Identify किया जा सकता है।

कोई भी Function किसी भी PHP Program में Calling Function से Arguments के रूप में Input Values प्राप्त करता है, Function की Body में उन Values के साथ विभिन्न प्रकार के Operations Perform करता है और Output के रूप में Processing से Generate Results को Return करता है।

Input, Process व Output के आधार पर किसी भी PHP Function को मूल रूप से तीन भागों में Divide किया जा सकता हैः

No Argument No Return Value Function

जब कोई PHP Function अपने Calling Function या Script से किसी प्रकार का कोई Input मान Arguments के रूप में प्राप्त नहीं करता और Calling Function को किसी तरह का कोई Processed मान Output के रूप में Return नहीं करता, तो इस प्रकार के PHP Function को No Argument No Return Value Function कहा जाता है।

सामान्यतः इस प्रकार के Functions बहुत ही कम बनाए जाते हैं। इस Function को ठीक से समझने के लिए हम दो संख्‍याओं को जोडने के लिए एक बहुत ही सामान्य सा PHP Function Create कर रहे हैं। ये Function निम्नानुसार हैः

<?php
	function add2number(){
		//Input 
		$first = 10;
		$second = 20;
		
		//Processing
		$third = $first + $second

		//Output
		echo "Total = " . $third; 
	}
	
	add2number();
?>

एक No Argument No Return Value PHP Function में Input, Process व Output तीनों काम Function के अन्दर ही होते हैं।

उपरोक्त Code द्वारा PHP Function से संबंधित कई Basic बातें समझी जा सकती हैं। उपरोक्त Code में function Keyword के बाद हमने add2number() Function Specify किया है और उसके बाद Curly Braces के बीच हमने वे Codes लिखे हैं, जिन्हें हमें तब Execute करना होता है, जब हम add2number() नाम के Function को Call करते हैं। इसलिए ये एक Function Definition है।

जबकि इस PHP Script के अन्तिम Statement के रूप में हमने add2number() Statement के बाद Semicolon का प्रयोग किया है, जो कि इस Function को Call करने वाला Statement है।

जब ये PHP Script Execute होती है, तब add2number() नाम का Function Definition Memory में Load हो जाता है। लेकिन ये Function Definition तब तक Execute नहीं होता, जब तक कि हम add2number() Function को Call नहीं करते, यानी Function के नाम व कोष्‍टठक के बाद Semicolon का प्रयोग नहीं करते।

जब PHP Parser इस Script की अन्तिम Line पर पहुंचता है, तब ये Function Call होता है क्योंकि इस Statement में Function के नाम व कोष्‍टठक के बाद Semicolon का प्रयोग किया गया है।

यहां से PHP Parser इस Function में Enter करता है, $first, $second$third नाम के तीन Function Create करता है, $first में मान 10 व $second में मान 20 Initialize करता है और इन दोनों की जोड करके $third में Store कर देता है। अन्त में इस जोड को Screen पर Echo करके फिर से Calling PHP Script में Return होता है।

Arguments but No Return Value Function

जब कोई PHP Function अपने Calling Function या Script से Arguments के रूप में एक या एक से ज्यादा Input मान प्राप्त करता लेकिन Calling Function को किसी तरह का कोई Processed मान Output के रूप में Return नहीं करता, तो इस प्रकार के PHP Function को Argument but No Return Value Function कहा जाता है।

हम किसी भी Function में मूल रूप से दो तरह से Arguments Pass कर सकते हैं। Value के रूप में व Reference के रूप में।

जब हम किसी Function में Value के रूप में Argument Pass करते हैं, तो इस प्रकार के Function को Pass by Value या Call by Value Function कहा जाता है, जबकि Arguments को Reference के रूप में Pass करने पर बनने वाले Function को Call by Reference या Pass by Reference Function कहा जाता है।

दोनों ही प्रकार से Pass किए जाने वाले Arguments की कार्यप्रणाली में काफी अन्तर होता है। जब हम किसी Function में किसी Identifier के मान को By Value Pass करते हैं, तब Function के Parenthesis में Specify किए गए Variables Arguments के रूप में आने वाले मान को Accept करने के लिए नया Variable Create करता है और इस नए Variable में Argument के रूप में आने वाला मान Copy होता है।

परिणाम स्वरूप यदि Function के अन्दर इस नए Create होने वाले Variable के मान में किसी तरह का परिवर्तन किया जाए, तो Function के बाहर यानी जहां से Identifier का मान Argument के रूप में Function में आया है, उस Identifier के मान में किसी तरह का कोई परिवर्तन नहीं होता।

लेकिन यदि हम किसी Function में किसी Identifier के मान को By Reference Pass करते हैं, तब Function के Parenthesis में Specify किए गए Variables Arguments के रूप में आने वाले मान को Accept करने के लिए नया Variable तो Create करते हैं, लेकिन इस Variable में Argument के रूप में आने वाला मान Copy नहीं होता बल्कि उस आने वाले मान के Identifier का Reference Copy हो जाता है।

परिणाम स्वरूप यदि Function के अन्दर इस नए Create होने वाले Variable के मान में किसी तरह का परिवर्तन किया जाए, तो Function के बाहर यानी जहां से Identifier का मान Argument के रूप में Function में आया है, उस Identifier के मान में भी परिवर्तन हो जाता है।

By Value Arguments – Example

इस Function को ठीक से समझने के लिए हम दो संख्‍याओं को जोडने के लिए बनाए गए अपने पिछले PHP Function को ही Modify कर रहे हैं। ये Function निम्नानुसार हैः

<?php
	function add2number($first, $second){
		//Process
		$first++;
		$second++;
		$third = $first + $second;	

		//Output
		echo "Total = " . $third; 
	}

	//Input	
	$x = 10;
	$y = 20;
	
	add2number($x, $y);
	
	Echo "\n X = $x";
	Echo "\n Y = $y";
?>

//Output
Total = 32
 X = 10
 Y = 20

एक Argument but No Return Value PHP Function में Input का काम Calling Function करता है और जो भी मान Processing के लिए Function में Pass करना होता है, उसे Arguments के रूप में Function में Pass किया जाता है। जबकि Function Arguments के रूप में आने वाले Input मानों को Process करके Output करने का काम करता है।

उपरोक्त Program में जब add2number() Function Call होता है, तो Call होते समय इसमें Input Values के रूप $x$y Variables के मान Arguments के रूप में Pass किए जाते हैं।

जब PHP इस Function को Call करता है, तब इन दोनों मानों को Function में Accept करने के लिए add2number() Function Definition में $first$second नाम के दो Variables Create करता है और इन दो नए Create होने वाले Variables में $x व $y के मानों को क्रमश:  $first व $second Variables में Copy कर देता है।

फिर हमने $first व $second के मानों में 1 जोडकर Result को फिर से इन्हीं Variables में Store करके इन Variables के मानों को Modify किया है, ताकि हम Call by Value या Pass by Value Functions को भी समझ सकें।

अन्त में इस Function के अन्दर $third नाम का एक Variable Create किया जाता है और इस Variable में $first व $second Arguments में Stored मानों के जोड को Store किया जाता है। फिर एक Echo Statement द्वारा $third Variable में Stored Result को Screen पर Echo किया जाता है।

चूंकि Function के सभी Statements यहां तब Execute हो चुके होते हैं, इसलिए PHP Control फिर से Calling PHP Script में Return हो जाता है।

इस उदाहरण में हमने add2number() Function को By Value Call किया है। यानी Function को Call करते समय हमने $x$y Variables को Function में By Value Pass किया है।

परिणामस्वरूप यदि इस Function के अन्दर हम $first या $second Variables के मानों में किसी भी तरह का Change करें, तो $x या $y Variable के मान में किसी तरह का कोई परिवर्तन नहीं होता, जैसाकि उपरोक्त Program के Output में हम देख सकते हैं कि $first$second Variables के मानों में हमने 1 Increment किया है, फिर भी $x व $y के मान में किसी तरह का कोई परिवर्तन नहीं हो रहा है।

By Reference Arguments – Example

यदि हम उपरोक्त PHP Script में Specify किए गए add2number() Function को निम्नानुसार Modify कर दें:

<?php
	function add2number(&$first, &$second){
		//Process
		$first++;
		$second++;
		$third = $first + $second;	

		//Output
		echo "Total = " . $third; 
	}

	//Input	
	$x = 10;
	$y = 20;
	
	add2number($x, $y);
	
	Echo "\n X = $x";
	Echo "\n Y = $y";
?>

//Output
Total = 32
 X = 11
 Y = 21

अब हम उपरोक्त Output में देख सकते हैं कि हालांकि हमने add2number() Function के अन्दर $first$second Variables को Increment किया है, फिर भी $x व $y Variables का मान Change हो रहा है।

ऐसा इसलिए हो रहा है क्योंकि इस बार add2number() Function को Call करते समय हमने $x व $y को Function में By Reference Pass किया है। परिणाम स्वरूप PHP इन दोनों Variables की Values को Hold करने के लिए नहीं बल्कि इनके References को Hold करने के लिए $first व $second नाम के Variables Create करता है। इसलिए जब add2number() Function $first$second नाम के Variables को Increment करता है, तब वास्तव में वह $x व $y के मानों को Increment कर रहा होता है।

Arguments and Return Value Function

जब कोई PHP Function अपने Calling Function या Script से Arguments के रूप में एक या एक से ज्यादा Input मान प्राप्त करता और आने वाले Input पर किसी तरह की Processing Apply करके Generate होने वाले Result को Output के रूप में फिर से Calling Function या Script को Return कर देता है, तो इस प्रकार के PHP Function को Argument and Return Value Function कहा जाता है।

सामान्यतः इस प्रकार के Functions सबसे ज्यादा बनाए जाते हैं। इस Function को ठीक से समझने के लिए हम दो संख्‍याओं को जोडने के लिए बनाए गए अपने पिछले Program को ही Modify करेंगे। ये Modified Function निम्नानुसार हैः

<?php
	function add2number($first, $second){
		//Process
		$third = $first + $second;
		return $third;	
	}

	//Input	
	$x = 10;
	$y = 20;
	$z;
	
	$z = add2number($x, $y);

	//Output
	echo "Total = " . $z; 
?>

//Output
Total = 32

एक Argument and Return Value PHP Function में InputOutput का काम Calling Function करता है, जबकि User Defined Function केवल Calling Function या Script से Arguments के रूप में आने वाले मानों को Accept करता है, उन पर Required Operations Perform करके Appropriate Output Generate करता है और उस Output को फिर से Calling Function या Script को Return कर देता है, जिसे Calling Function या Script Accept करके Output करने का काम करता है।

उपरोक्त Program में जब add2number() Function Call होता है, तो Call होते समय इसमें Input Values के रूप $x$y Variables के मान Arguments के रूप में Pass किए गए हैं।

जब PHP इस Function को Call करता है, तब इन दोनों मानों को Function में Accept करने के लिए add2number() Function Definition में $first$second नाम के दो Variables Create करता है और इन दो नए Create होने वाले Variables में $x व $y के मानों को क्रमश:  $first व $second Variables में Copy कर देता है।

फिर इस Function के अन्दर $third नाम का एक Variable Create किया गया है और इस Variable में $first व $second Arguments में Stored मानों के जोड को Store किया गया है तथा इस $third नाम के Variable के मान को return Statement द्वारा Calling Script में Return कर दिया गया है।

चूंकि ये Function एक Processed Value Return कर रहा है, इसलिए इस Value को Accept करने के लिए Script में $z नाम का एक Variable Create किया गया है और Function को = Operator के बाद Call किया गया है, ताकि Function से Return होने वाले मान को $z नाम के Variable में प्राप्त किया जा सके।

Script के अन्त में $z नाम के Variable के मान को Echo किया गया है, जो कि Function में Input किए गए दोनों Variables $x$y के मानों के जोड को Print कर देता है।

PHP in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook PHP in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

PHP in Hindi | Page: 647 | Format: PDF

BUY NOW GET DEMO REVIEWS