2010-07-10 7 views
166

कुछ लिपियों में मुझे लगता है कि वे स्क्रिप्ट के लिए एक बंद टैग ?> लिखना छोड़ देते हैं। यह क्यों है और मुझे यह भी करना चाहिए?कुछ स्क्रिप्ट क्यों बंद PHP टैग, '?>' को छोड़ देते हैं?

(मुझे यकीन है कि वे इसे नहीं भूल गए हैं हूँ।)

+18

कई पुराने पाठ संपादक हमेशा पीछे की रेखा को इंजेक्ट करते हैं। और पीछे की ओर सफेद जगह "हेडर पहले ही भेजे गए" त्रुटियों का नेतृत्व किया। पीएचपी दुभाषिया वास्तव में इस समस्या को रोकता है, और समापन टैग के बाद एक सिंगल पीछे \ r और \ n न्यूलाइन खाता है। हालांकि कुछ अप्रत्याशित प्रोग्रामर ने गलती से दो या दो से अधिक पिछली न्यूलाइन या रिक्त स्थान जोड़े, टैब के बाद?>। यही कारण है कि इसे PHP बंद मार्कर को छोड़ने के लिए अच्छा नौसिखिया मार्गदर्शन माना जाता है। हालांकि यह ** अच्छी कोडिंग शैली ** का संकेत नहीं है। – mario

+4

@ मारियो "हालांकि यह अच्छी कोडिंग शैली का संकेत नहीं है।" -> बिलकुल नहीं। ज़ेंड फ्रेमवर्क (सबसे मजबूत माना जाता है - और इस तरह जटिल) कुछ और कई अन्य पेशेवरों और संगठनों ने वास्तव में फ़ाइलों को अनावश्यक रूप से '?>' जोड़ने पर रोक लगा दी है। [ज़ेंड फ्रेमवर्क कोडिंग मानक PHP फ़ाइल स्वरूपण] (http://framework.zend.com/manual/en/coding-standard.php-file-formatting.html) –

+1

@ बटाल तो कई अन्य कोडिंग शैलियों को करें। मैं होर्ड या पीयर कोडिंग दिशानिर्देशों या कोडस्निफर के साथ छोड़े गए टैग के बारे में शिकायत कर सकता हूं। लेकिन अंत में, हर सामान्यीकरण एक झूठ है। मानक के रूप में किसी एक विधि को घोषित करने से यह सर्वोत्तम अभ्यास नहीं करता है। आईएमओ मामलों का उपयोग करें और डेवलपर प्रवीणता का निर्धारण यहां होना चाहिए। (लेकिन हाँ, एक चुने हुए कोडिंग दिशानिर्देश से भी चिपके रहें !;) – mario

उत्तर

160

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

समापन टैग को हटाने से कई कोडिंग दिशानिर्देशों का जिक्र करने वाला "अच्छा अभ्यास" है।

+101

कुछ इसे भाषा दोष होने पर भी विचार करेंगे। –

+5

कुछ मामलों में यह आवश्यक नहीं है? अंत टैग के बाद सफेद जगहों को साफ करने के लिए लोग ज़िम्मेदार हैं। कुछ मामलों में किसी को अंत टैग के बाद आउटपुट की आवश्यकता हो सकती है। –

+4

यह [ज़ेंड] है (http://framework.zend.com/manual/en/coding-standard.php-file-formatting.html) और [ड्रूपल] (http://drupal.org/coding- मानक #phptags) '?>' टैग को छोड़ने के लिए मानक। – Josh

14

वे इसे बंद टैग जो हेडर काम करने के लिए बंद हो सकता है के बाद व्हाइटस्पेस के लिए जोखिम से बचने के लिए करते हैं।

यह निश्चित रूप से PHP-केवल फ़ाइलों के लिए सच है।

75

PHP: Instruction Separation

से एक फ़ाइल के अंत में एक PHP ब्लॉक के बंद टैग वैकल्पिक है, और कुछ मामलों में छोड़ते हुए जब include() या require() का उपयोग कर यह उपयोगी है, इसलिए अवांछित खाली स्थान के पर घटित नहीं होगा फ़ाइलों का अंत, और आप बाद में प्रतिक्रिया में हेडर जोड़ने में सक्षम होंगे। यदि आप आउटपुट बफरिंग का उपयोग करते हैं तो यह भी आसान है, और शामिल फ़ाइलों द्वारा उत्पन्न भागों के अंत में अतिरिक्त अवांछित व्हाइटस्पेस देखना पसंद नहीं करेगा।

+5

+ 1 php.net से आधिकारिक बयान के लिए! जो मुझे इस मामले से संबंधित सबसे प्रासंगिक स्रोत लगता है। – Levit

5

PHP के आधुनिक संस्करण php.ini में ध्वज सेट करते हैं। यदि आउटपुट बफरिंग सक्षम है, तो आप HTML आउटपुट के बाद HTTP शीर्षलेख और कुकीज़ सेट कर सकते हैं, क्योंकि लौटाया गया कोड तुरंत ब्राउज़र पर नहीं भेजा जाता है।

क्या इस संदर्भ में अभी भी उदाहरण मान्य हैं?

+0

हम वास्तव में नहीं - आउटपुट बफरिंग सक्षम करने के साथ बंद टैग imho को छोड़ने की आवश्यकता नहीं है। – dhh

6

CodeIgniter Framework के लिए

समापन टैग छोड़ पता चलता है "... अवांछित उत्पादन, पीएचपी त्रुटियों या रिक्त पृष्ठ पैदा कर सकता है"।

आप इसे here पढ़ सकते हैं।

0
  1. यह अवांछित सफेद स्थान/खाली पृष्ठ दिखाता है। HTTP शीर्षलेख उन अवांछित सफेद जगहों के लिए काम नहीं करते हैं।
  2. अधिकांश फ़ाइल के अंत में जावास्क्रिप्ट इंजेक्शन बनाया जाता है। यह एक त्रुटि संदेश दिखाएगा और कोड को तोड़ देगा, इंजेक्शन जावास्क्रिप्ट कोड निष्पादित नहीं होता है।
+1

अगर कोई ** ** ** ** ** के अंत में जेएस इंजेक्ट कर सकता है तो यह बहुत बुरा होगा। – Calmarius

+3

हाँ यह होगा। वे php के साथ बहुत सी चीजें कर सकते हैं, जेएस इंजेक्ट क्यों करना चाहिए। मैं तब मूर्ख था, और अभी भी एक। मैं क्या सोच रहा था। –

30

php.net on PHP tags:

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

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