PHP Anonymous Function – Recursive Functions

PHP Anonymous Functions को सामान्यतः Closures या Lambda Function भी कहा जाता है। ये ऐसे Functions होते हैं, जिनका कोई नाम नहीं होता। JavaScript के विभिन्न Frameworks में Anonymous Functions का बहुत प्रयोग किया जाता है।

PHP में ये Functions Callback Parameters के रूप में बहुत ही उपयोगी साबित होते हैं, लेकिन Callback Parameters के रूप में Use करने के अलावा भी इनका बहुत ही Unique रूप से विभिन्न स्थानों पर उपयोग किया जाता है।

PHP में किसी Anonymous Function को Create करने के लिए हमें PHP के Core में पहले से Define किए हुए create_function() Function को Use कर सकते हैं।

ये Function Arguments के रूप में दो Parameters Accept करता है। पहला Argument Anonymous Function में Pass किए जाने वाले Parameters को Represent करते हैं, जबकि दूसरा Parameter, Anonymous Function की Body को Represent करता है। इसे हम निम्न उदाहरण द्वारा समझ सकते हैं:

<?php
	$biggestValue = create_function('$x, $y', 'if($x > $y) return $x; else return $y;');
	echo $biggestValue(100, 13);
?>

इस PHP Program में हमने $biggestValue नाम के एक Variable में दो संख्‍याओं में से बडी संख्‍या Return करने वाले Anonymous Function का Reference Store किया है। इस Anonymous Function को हम इसके Reference Variable के नाम द्वारा भी Call कर सकते हैं।

इसीलिए हमने इस Program के दूसरे Statement में $biggestValue Variable में Stored Function के Reference से उस Anonymous Function को Call किया है, जो कि दो संख्‍याओं में से बडी संख्‍या Return करता है।

यानी इस प्रकार से किसी Function Code को हम एक अन्य तरीके से भी Access कर सकते हैं, जिसमें किसी Function से उसका नाम Associated नहीं रहता बल्कि उसका Reference किसी दूसरे Variable में Stored रहता है। इसलिए हम किसी Anonymous Function के Reference को किसी दूसरे Variable में भी Store कर सकते हैं और समान Function को किसी दूसरे नाम से भी Call कर सकते हैं। जैसाकि निम्न Code में किया गया हैः

<?php
	$biggestValue = create_function('$x, $y', 'if($x > $y) return $x; else return $y;');
	
	$bigIn2 = $biggestValue;
	echo $bigIn2(100, 13);
?>

इस Program में हमने एक Anonymous Function Create किया है और उस Function का Reference $biggestValue Variable में Store किया है। फिर इस Reference को हमने $bigIn2 नाम के Variable में Store कर दिया है और अन्त में इस $bigIn2 Variable द्वारा दो संख्‍याओं में से बडी संख्‍या Return करने वाले Anonymous Function को Call किया है।

जबकि यदि हम उपरोक्त Anonymous Function के साथ निम्नानुसार Directly biggestValue नाम को Associate कर देतेः

<?php
	 function biggestValue($x, $y){
	 	if($x > $y) 
	 		return $x; 
	 	else 
	 		return $y;
	 }
	
	$bigIn2 = biggestValue;
	echo $bigIn2(100, 13);
?>

तो अब ये Function Error Generate करता है। यानी अब हम $biggestValue Function के Reference को $bigIn2 Variable में Store नहीं कर सकते व इस Function को ठीक उसी तरह से Call नहीं कर सकते, जिस तरह से पिछले Program में किया था।

लेकिन जैसाकि हमने पिछले Section में देखा, हम किसी Function के नाम को किसी दूसरे Variable में Store कर सकते हैं और उस Function को ठीक उसी तरह से Call कर सकते हैं, जैसाकि उपरोक्त Code में किया है। यानी हम Variable Function Create कर सकते हैं। जैसेः

<?php
	 function biggestValue($x, $y){
	 	if($x > $y) 
	 		return $x; 
	 	else 
	 		return $y;
	 }
	
	$bigIn2 = "biggestValue";
	echo $bigIn2(100, 13);
?>

अब ये Program भी Anonymous वाले Program की तरह सामान्य रूप से काम करता है क्योंकि अब हमने Function के नाम को एक Variable Function की तरह उपयोग में लिया है। आप देख सकते हैं कि उपरोक्त दोनों Programs में केवल एक Line में अन्तर है। जब हम Function के नाम को Double Quotes के बीच Specify करते हैं, तो Function एक Variable Function बन जाता है और सामान्य रूप से काम करता है, जबकि Function के नाम को Double Quotes के बीच न लिखने पर हमें Error प्राप्त होता है।

Recursive Functions

जब कोई Function फिर से स्वयं को ही Call कर लेता है, तो इस प्रकार के Function को Recursive Function कहते हैं और Function के स्वयं को ही Call करने की प्रक्रिया को Recursion कहते हैं।

हम किसी भी Function को Recursive Function की तरह उपयोग में ले सकते हैं, लेकिन जब हम किसी Function को Recursive Function की तरह उपयोग में लेते हैं, तब हमें किसी न किसी तरह की Condition Use करके Function के Recursively Call होने की प्रक्रिया को Control करना जरूरी होता है, अन्यथा हमारा PHP Program Infinite Looping में फंस जाता है।

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

PHP in Hindi | Page: 647 | Format: PDF

BUY NOW GET DEMO REVIEWS