अनाम कार्यों में PHP चर


119

मैं PHP में अनाम फ़ंक्शंस के साथ खेल रहा था और महसूस किया कि वे उनके बाहर चर तक नहीं पहुँचते हैं। क्या इस समस्या के आसपास जाने का कोई तरीका है?

उदाहरण:

$variable = "nothing";

functionName($someArgument, function() {
  $variable = "something";
});

echo $variable;  //output: "nothing"

यह "कुछ नहीं" का आउटपुट देगा। क्या कोई ऐसा तरीका है जिससे अनाम फ़ंक्शन एक्सेस कर सकता है $variable?

जवाबों:


277

हाँ, एक बंद का उपयोग करें :

functionName($someArgument, function() use(&$variable) {
  $variable = "something";
});

ध्यान दें कि $variableअनाम फ़ंक्शन के दायरे के बाहर संशोधित मूल्य को संशोधित करने और पुनर्प्राप्त करने में सक्षम होने के लिए , इसे बंद करने के उपयोग में संदर्भित किया जाना चाहिए &


यह नया है! यह PHP 5.3 में नया है सिंटैक्स।
रॉकेट हज़मत

1
@Rocket तो, निष्पक्ष होने के लिए, सही अनाम फ़ंक्शन सिंटैक्स है (जैसा विरोध किया गया है create_function()) और useकीवर्ड उसी दस्तावेज़ पृष्ठ पर (बुरी तरह से) प्रलेखित है जो उनका वर्णन करता है।
डेव रैंडम जूल

4
उन लोगों के लिए त्वरित नोट जो शायद नहीं जानते: आप &किसी वस्तु को पास करते समय छोड़ सकते हैं , क्योंकि वे हमेशा संदर्भ द्वारा पारित किए जाते हैं ... और अपने टाइप-हिंट को न भूलें :) Eg:function() use (PDO $pdo) {
keyboardSmasher

@ अलिसवेल नहीं, यह केवल वस्तुओं के लिए है, अन्यथा आपको चर को संशोधित करने के लिए संदर्भ से गुजरना होगा। इस उदाहरण को देखें ।
निक डे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.