मुझे और एक सहयोगी एक बहुत ही अजीब व्यवहार नए कीवर्ड "उपज" PHP संस्करण में उपयोग कर पाया: 5.5.11 और हम जानना चाहते हैं, तो निम्न सामान्य है:पीएचपी यील्ड, अजीब व्यवहार
को देखते हुए निम्नलिखित है कोड: गूंज और मर जाता है पूरी तरह से छोड़ दिया और मार डाला नहीं है और सिर्फ वस्तु "उपज" बनाता है var_dumped है:
function yieldTest()
{
echo 'wtf1';
die('wtf2');
foreach (['foo', 'bar', 'baz'] as $each) {
yield $each;
}
}
var_dump(yieldTest());
इस बारे में उत्सुक बात यह है कि अगर "उपज" समारोह, दोनों में मौजूद है।
जब हम मैन्युअल रूप से सरणी/ऑब्जेक्ट बनाते हैं और वापसी का उपयोग करते हैं तो यह कार्य करता है।
हमने पाया कि समारोह में उपज मौजूद होने के बाद भी कुल स्किप अपवाद को फेंक दिया गया है।
क्या यह बहुत अजीब व्यवहार वास्तव में इरादा है या क्या हमें एक बग मिला है?
हम वास्तव में विश्वास नहीं कर सकते कि यह वांछित है क्योंकि इससे कार्यों की विश्वसनीयता कम हो जाएगी।
इसके अलावा Google ने इस समस्या से संबंधित किसी भी जानकारी को नहीं बताया, इसलिए मैंने सोचा कि मैं यहां पूछता हूं।
को सटीकता से सही उठाती है।। अच्छा उत्तर। – lonesomeday
लॉल यह एक मुश्किल है। हमने सब कुछ परीक्षण किया लेकिन यह नहीं कि, फ़ंक्शन उपयोग में था और इसलिए यह पूरी तरह से अनजान प्रतीत होता था, हालांकि यह अभी भी एक प्रीप्रोसेसर की तरह अजीब है और फ़ंक्शंस को अविश्वसनीय बना सकता है कि कुछ कोड छोड़ दिए जाते हैं या निष्पादित होते हैं जब आप वास्तव में इसे नहीं चाहते हैं। वैसे भी आपके त्वरित और सही प्रतिक्रिया के लिए धन्यवाद। – Steini
यह दस्तावेज है, वैसे: http://www.php.net/manual/en/language.generators.syntax.php#language.generators.object – lonesomeday