परिचय
अनाम फ़ंक्शन किसी उपयोगकर्ता-परिभाषित नाम के बिना एक फ़ंक्शन है। ऐसे फ़ंक्शन को क्लोज़र (closure) या लैम्ब्डा (lambda) फ़ंक्शन भी कहा जाता है। कभी-कभी, आप एक बार उपयोग के लिए फ़ंक्शन चाहते हैं। क्लोज़र एक अनाम फ़ंक्शन है जो उस वातावरण पर बंद होता है जिसमें यह परिभाषित है। इसमें use कीवर्ड निर्दिष्ट करना होता है। अनाम फ़ंक्शन का सबसे आम उपयोग इंलाइन कॉलबैक फ़ंक्शन बनाने के लिए है।
सिंटैक्स
$var = function ($arg1, $arg2) {
return $val;
};
- function कीवर्ड और ओपनिंग पैरेंथेसिस के बीच कोई फ़ंक्शन नाम नहीं होता।
- फ़ंक्शन परिभाषा के बाद सेमीकोलन होता है क्योंकि अनाम फ़ंक्शन परिभाषाएँ एक्सप्रेशन होती हैं।
- फ़ंक्शन एक वेरिएबल को असाइन किया जाता है, और बाद में वेरिएबल के नाम का उपयोग करके कॉल किया जाता है।
- जब किसी अन्य फ़ंक्शन को पास किया जाता है जो बाद में इसे कॉल कर सकता है, तो इसे कॉलबैक के रूप में जाना जाता है।
- इसे बाहरी फ़ंक्शन के भीतर से लौटाएं ताकि यह बाहरी फ़ंक्शन के वेरिएबल्स तक पहुँच सके। इसे क्लोज़र के रूप में जाना जाता है।
उदाहरण
उदाहरण 1: बुनियादी अनाम फ़ंक्शन
<?php
$var = function ($x) {
return pow($x, 3);
};
echo "cube of 3 = " . $var(3);
?>
आउटपुट
cube of 3 = 27
उदाहरण 2: कॉलबैक के रूप में अनाम फ़ंक्शन
निम्न उदाहरण में, एक अनाम फ़ंक्शन का उपयोग बिल्ट-इन usort() फ़ंक्शन के आर्गुमेंट के रूप में किया जाता है। usort() फ़ंक्शन दी गई सरणी को तुलना फ़ंक्शन का उपयोग करके सॉर्ट करता है।
<?php
$arr = [10, 3, 70, 21, 54];
usort($arr, function ($x, $y) {
return $x > $y;
});
foreach ($arr as $x) {
echo $x . "\n";
}
?>
आउटपुट
3 10 21 54 70
उदाहरण 3: क्लोज़र के रूप में अनाम फ़ंक्शन
क्लोज़र भी एक अनाम फ़ंक्शन है जो use कीवर्ड की सहायता से अपने दायरे के बाहर के वेरिएबल्स तक पहुँच सकता है।
<?php
$maxmarks = 300;
$percent = function ($marks) use ($maxmarks) {
return $marks * 100 / $maxmarks;
};
echo "marks=285 percentage=" . $percent(285);
?>
आउटपुट
marks=285 percentage=95