PHP 5.3 में मूल रूप से बंद होने का समर्थन करेगी। जब आप एक स्थानीय फ़ंक्शन चाहते हैं, जो केवल कुछ छोटे, विशिष्ट उद्देश्य के लिए उपयोग किया जाता है, तो एक क्लोजर अच्छा है। बंद के लिए आरएफसी एक अच्छा उदाहरण दे:
function replace_spaces ($text) {
$replacement = function ($matches) {
return str_replace ($matches[1], ' ', ' ').' ';
};
return preg_replace_callback ('/( +) /', $replacement, $text);
}
यह आपको replacement
फ़ंक्शन को स्थानीय रूप से अंदर परिभाषित करने देता है replace_spaces()
, ताकि यह न हो:
1) वैश्विक नामस्थान
2 को अव्यवस्थित करना ) लोगों को लाइन से तीन साल नीचे करना आश्चर्यचकित करता है कि वैश्विक रूप से परिभाषित एक फ़ंक्शन क्यों है जो केवल एक दूसरे फ़ंक्शन के अंदर उपयोग किया जाता है।
यह चीजों को व्यवस्थित रखता है। ध्यान दें कि फ़ंक्शन का स्वयं का कोई नाम नहीं है, इसे केवल एक संदर्भ के रूप में परिभाषित और असाइन किया गया है $replacement
।
लेकिन याद रखें, आपको PHP 5.3 के लिए इंतजार करना होगा :)
आप कीवर्ड के उपयोग से बंद होने वाले दायरे के बाहर भी चर का उपयोग कर सकते हैं use
। इस उदाहरण पर विचार करें।
$multiplier = 3;
$numbers = array(1,2,3,4);
array_walk($numbers, function($number) use($multiplier){
echo $number * $multiplier;
});
एक उत्कृष्ट विवरण यहां दिया गया है। php lambdas और closures क्या हैं