आज मैं एक दिलचस्प मुद्दे पर भाग गया। हमारे पास एक ऐसा एप्लिकेशन है जो ज़ेंड फ्रेमवर्क कैशिंग कार्यक्षमता का उपयोग करता है। इस आवेदन करने के लिए एक अनुरोध आम तौर पर निम्न पंक्तिcall_user_func_array बनाम call_user_func
$result = call_user_func_array(array("myclass", "factory"), array($id));
विचार है कि हम बाद में उपयोग कर सकते हैं कारखाना विधि से एक ऑब्जेक्ट प्रदान करने के लिए है का उपयोग करते हुए एक कारखाने प्रणाली को बुलाती है। जब हमने एक कैशिंग सुविधा लागू की, तो यह कॉल बस ठीक है, मर जाता है। कोई त्रुटि नहीं, सिर्फ एक सफेद स्क्रीन। त्रुटि लॉग में कुछ भी नहीं। हम ठीक से पहले लाइन को लॉग इन करने में त्रुटि कर सकते हैं, लेकिन फैक्टरी विधि के अंदर error_log करने का प्रयास कुछ भी नहीं करता है।
दिलचस्प बात यह करने के लिए लाइन को बदलने:
$result = call_user_func(array("myclass", "factory"), $id);
फिक्स मुद्दा।
हमने बग रिपोर्ट के लिए कुछ घंटे बिताए हैं और इस व्यवहार को समझाने के लिए बहुत कुछ नहीं आया है। किसी को विचार?
मैंने हाल ही में इस मुद्दे को देखा है जबकि मेरे सभी कोड नामस्थानों का उपयोग करने के लिए परिवर्तित कर रहा है। कक्षा ठीक है और मैं इसके उदाहरणों को तत्काल कर सकता हूं। लेकिन जब मैं एक उदाहरण लेता हूं और _array या नहीं तो इसका उपयोग करने पर एक विधि को कॉल करने का प्रयास करता हूं, कुछ भी नहीं होता है। कोड जारी है, लेकिन विधि कभी नहीं कहा जाता है। –