ध्यान दें कि बग रिपोर्ट थोड़ी दूर है, क्योंकि PHP इस संदेश को तब भी लॉग करेगा जब आपके पास E_STRICT
का त्रुटि स्तर होगा (या हाल ही में, आपके त्रुटि स्तर पर ध्यान दिए बिना कि आपने एक कस्टम त्रुटि हैंडलर सेट किया है) ।
PHP का visibility rules स्पष्ट रूप से दर्शाता है कि एक बच्चे को अपने माता-पिता के निजी सदस्यों को देखने की क्षमता नहीं है, जो मुझे संदेह है कि किसी के लिए आश्चर्य की बात है। अगर बच्चा अपने माता-पिता के तरीकों को नहीं देख पा रहा है, तो मुझे समझ में नहीं आता कि उनकी परिभाषाओं का पालन करने के लिए इसका कर्तव्य कैसे हो सकता है।
मैं व्यक्तिगत रूप से लगता है कि बग के कारण है कि यह नहीं था कोई वास्तविक दोष (क्योंकि यह गैर स्पष्ट है और मैं दस्तावेज में यह किसी भी उल्लेख नहीं पा सके) किसी भी विवरण के बिना के रूप में फर्जी चिह्नित किया जा रहा एक है थोड़ा गलत, लेकिन हाँ। यही कारण है कि एक तरफ, मैं zend_compile.c
में राय लाइन 2669 की कर रहा हूँ वास्तव में इस प्रकार है पढ़ना चाहिए:
} else if (child->prototype &&
(EG(error_reporting) & E_STRICT || EG(user_error_handler))) {
... जो त्रुटि पॉपिंग से बचने होगा जब माता-पिता की विधि निजी चिह्नित किया गया था। यह देखते हुए कि आपके पास हमेशा E_STRICT
लॉगिंग नहीं करने का विकल्प है, और यह वास्तव में कुछ भी नकारात्मक प्रभाव नहीं डालता है, मुझे लगता है कि यह वास्तव में एक बड़ा सौदा नहीं है। मैं निश्चित रूप से नहीं देखता कि यह जानबूझकर कैसे हो सकता है, लेकिन मैं एक PHP इंजन डेवलपर नहीं हूं।
स्रोत
2010-07-15 21:49:57
:-) यह मुझे लगता है जैसे कोई कुछ लागू करने के लिए भूल रहा था। –
जावा में यह विधि भिन्न है क्योंकि विधि हस्ताक्षर विधि नाम, और पैरामीटर प्रकार के होते हैं। PHP हस्ताक्षर में विधि का नाम है क्योंकि आप अतिरिक्त पैरामीटर के साथ विधियों को कॉल कर सकते हैं और विधि के अंदर अतिरिक्त पैरामीटर तक पहुंच सकते हैं। तो PHP केवल फ़ंक्शन के लिए आवश्यक न्यूनतम तर्कों को बता सकता है, लेकिन अब नहीं। – Jari
निजी विधि उप वर्ग में दिखाई नहीं देनी चाहिए (अपने नमूना कोड के मेरे परीक्षा परिणाम देखें)। तो विभिन्न तरीकों से विधि हस्ताक्षर परिभाषित किए गए हैं महत्वपूर्ण नहीं है। –