मैं एक निम्नलिखित कोड का टुकड़ा है:पहली कॉल में कोई E_NOTICE त्रुटि क्यों नहीं है?
error_reporting(E_ALL | E_STRICT);
function &getVal() {
$data = [];
return $data['hey'];
//return $whatever;
}
function getVal2() {
$data = [];
return $data['hey'];
}
var_dump(getVal()); // No E_NOTICE error is issued - why?
var_dump(getVal2()); // E_NOTICE error is issued.
और सवाल यह है: क्यों वहाँ पहली कॉल में कोई E_NOTICE
त्रुटि है? स्पष्टीकरण सबसे अधिक संभावना है कि एक संदर्भ वापस करने के लिए चर $data['hey']
बनाया गया है। हालांकि, यह अभी भी गलत लगता है कि E12NOTICE त्रुटि जारी न करें जब $data['hey']
(या $whatever
, ...
) परिभाषित नहीं किया गया है।
आपने स्वयं से सवाल का जवाब दिया। "गलत लगता है" के रूप में ... यह PHP है, है ना? – Jon
ठीक है, आप बिल्कुल सही हैं। समस्या यह है कि, इसे संदर्भित करने की केवल क्रिया द्वारा इसे तुरंत चालू किया गया। संभवतया यह करना है कि हूड के तहत संदर्भ कैसे हैंडल करते हैं, उदाहरण के लिए 'preg_match (' .. ',' .. ', $ match) को कॉल करना; 'निश्चित रूप से' $ match' की शिकायत भी नहीं करनी चाहिए अभी तक, बिंदु इसे भर रहा है। संदर्भ_ द्वारा _return देखें 'मैं चाहता हूं कि आप इस स्थान पर _and alter_ डेटा तक पहुंचें'। जब आप दायरे को बंद कर देते हैं तो वापसी के बाद आप तुरंत उस चर को त्याग देते हैं। मैं यह नहीं कह रहा कि यह बहुत सुंदर है, लेकिन यह है कि यह कैसे है। – Wrikken