2010-11-05 6 views
5

मैं PHP 5.3 पर हमारे कई सर्वर अपडेट करने के लिए बहुत उत्सुक हूं। यह ज़ेंड फ्रेमवर्क 2 और स्पष्ट प्रदर्शन अपडेट के लिए भी तैयारी में होगा। दुर्भाग्यवश, मेरे पास इन सर्वरों पर विरासत कोड की बड़ी मात्रा है जो समय पर तय की जाएगी, लेकिन माइग्रेशन से पहले सभी को ठीक नहीं किया जा सकता है। मैं अद्यतन करने पर विचार कर रहा हूं लेकिन कुछ विकास साइटों पर बहिष्कृत फ़ंक्शन त्रुटि को अक्षम कर रहा हूं जहां मैं पुराने कोड को अपडेट करने के माध्यम से काम करना शुरू कर सकता हूं।बहिष्कृत कार्यों के साथ PHP 5.3 को अपडेट करना चेतावनी अक्षम

error_reporting(E_ALL^E_DEPRECATED); 

क्या कोई मौलिक कारण है कि यह एक बुरा विचार क्यों होगा?

उत्तर

3

यदि आपने पहले से ही migration guide को Backward Incompatible Changes और Removed Extensions पर विशेष ध्यान देने के साथ पढ़ना नहीं है।

आपके पास बहिष्करण की तुलना में बड़े मुद्दे हैं। E_DEPRECATED को अनदेखा करना पर्याप्त नहीं होगा। असंगत परिवर्तनों के कारण अन्य प्रकार की त्रुटियां भी हो सकती हैं, या शायद, इससे भी बदतर, अप्रत्याशित व्यवहार।

<?php 
function goto($line){ 
    echo $line; 
} 
goto(7); 
?> 

इस कोड को ठीक से काम करेंगे और आउटपुट 7 पीएचपी 5.2.x में लेकिन आप PHP 5.3.x. में एक पार्स त्रुटि दे देंगे:

यहाँ एक सरल उदाहरण है

आपको क्या करना है उस मार्गदर्शिका में प्रत्येक आइटम लेना और जहां आवश्यक हो वहां अपडेट करें और अपडेट करें। इसे तेजी से बनाने के लिए आप पहले चरण में बहिष्कृत कार्यक्षमता को अनदेखा कर सकते हैं और E_DEPRECATED के लिए त्रुटि रिपोर्टिंग को अक्षम कर सकते हैं, लेकिन आप यह नहीं मान सकते कि आपको किसी अन्य प्रमुख PHP शाखा को पोर्ट करते समय केवल कुछ हानिरहित चेतावनियां मिलेंगी।

इसके अलावा अपने हैक को न भूलें और जितनी जल्दी हो सके बहिष्कृत मुद्दों को ठीक करें।

सादर,
एलिन

नोट: मैं देखने के एक व्यावहारिक बिंदु से सवाल का जवाब देने हैं, इसलिए कृपया मुझे मत बताओ कि चेतावनी की अनदेखी कर बुरा है की कोशिश की। मुझे पता है, लेकिन मुझे यह भी पता है कि समय एक अनंत संसाधन नहीं है।

4

अच्छा, आप भूल सकते हैं कि आपने ध्वज सेट किया है और आश्चर्य है कि आपका एप्लिकेशन अगले PHP अपडेट में क्यों टूटता है। उचित त्रुटि रिपोर्टिंग के बिना किसी एप्लिकेशन को डीबग करना बहुत निराशाजनक हो सकता है। यही कारण है कि मैं सोच सकता हूं।

हालांकि, यदि आप ऐसा करते हैं, तो इसे कहीं भी दस्तावेज़ करें। फ्लैग को सेट करना याद रखने से पहले यह आपको कुछ घंटे बचा सकता है।

+3

एक बार इन बहिष्कृत सुविधाओं को PHP से हटा दिया जाता है, तो उनका उपयोग करके कोड E_WARNING या घातक त्रुटियों का उत्पादन शुरू कर देगा, इसलिए इसे याद करना मुश्किल होगा;) – Mchl

+0

अच्छा, मुझे यह नहीं पता था :)। साझा करने के लिए Thx। – TheGrandWazoo

1

मुझे लगता है कि आपके पास किसी प्रकार का टेस्ट सर्वर है? यदि नहीं, तो आपको वास्तव में एक सेट अप करना होगा और PHP 5.3 में अपना कोड जांचना चाहिए। यदि आपका कोड पूरी तरह से यूनिट परीक्षण किया गया है, तो परीक्षण में सेकंड लगेंगे, और इसे ठीक करना भी काफी तेज़ होगा, क्योंकि यूनिट परीक्षण आपको बताएंगे कि वास्तव में कहां देखना है। यदि नहीं, तो अगली रिलीज से पहले इकाई परीक्षण को सभी प्राथमिकता देने पर विचार करें, और इस बीच में सभी के माध्यम से जाएं, पहले E_DEPRECATED चेतावनियों को अक्षम कर दिया गया है और जो कुछ भी आता है उसे ठीक करें, फिर आपके पास समय होने के बाद फिर से सक्षम हो जाए। त्रुटियों को ठीक करने के लिए आप वैश्विक खोज-और-प्रतिस्थापन भी चला सकते हैं।

संबंधित मुद्दे