मैं नामित पैरामीटर पास करने के लिए एसोसिएटिव सरणी का उपयोग करने का सुझाव दूंगा, लेकिन उन्हें निकालने के बिना उन्हें सरणी में रखें।
function myFunc(array $args) {
echo "Hi, " . $args['name'];
// etc
}
इसके लिए कुछ कारण हैं। उस समारोह को देखते हुए, आप स्पष्ट रूप से देख सकते हैं कि मैं फ़ंक्शन में पारित तर्कों में से एक का जिक्र कर रहा हूं। यदि आप उन्हें निकालते हैं, और extract()
पर ध्यान न दें, तो आप (या अगला व्यक्ति) आपके सिर को खरोंच कर रहे होंगे जहां यह "$name
" चर आया था। भले ही आप जानते हैं कि आप स्थानीय चर के लिए तर्क निकाल रहे हैं, यह अभी भी एक निश्चित डिग्री के लिए अनुमान लगाने वाला गेम है।
दूसरा, यह सुनिश्चित करता है कि अन्य कोड तर्कों को ओवरराइट नहीं करता है। आपने अपने कार्य को केवल $foo
और $bar
नामक तर्कों की अपेक्षा की हो सकती है, इसलिए उदाहरण के लिए, आप $baz = 8;
को परिभाषित करते हैं। बाद में, हो सकता है कि आप "फ़ज़" नामक एक नया पैरामीटर लेने के लिए अपने फ़ंक्शन का विस्तार करना चाहें, लेकिन अपने अन्य चर बदलने के लिए भूल जाएं, इसलिए तर्कों में कोई फर्क नहीं पड़ता कि $baz
हमेशा 8 पर सेट हो जाएगा।
वहां सरणी भी उपयोग के कुछ लाभ हैं (इन्हें निकालने या सरणी में छोड़ने के तरीकों के लिए समान रूप से लागू):
function myFunc (array $args) {
$default = array(
"name" => "John Doe",
"age" => "30"
);
// overwrite all the defaults with the arguments
$args = array_merge($defaults, $args);
// you *could* extract($args) here if you want
echo "Name: " . $args['name'] . ", Age: " . $args['age'];
}
myFunc(array("age" => 25)); // "Name: John Doe, Age: 25"
तुम भी निकाल सकते: आप $defaults
कहा जाता है प्रत्येक कार्य के शीर्ष पर एक चर सेट कर सकते हैं $args
से सभी आइटम जिनके पास $default
मान नहीं है। इस तरह आप जानते हैं कि आपके पास कौन से चर हैं।
इसे संभालने का अच्छा तरीका। मुझे लिखने से पहले मुझे अपना जवाब नहीं पछतावा है। – Rolf