Php को बंद करने या न करने के लिए


14

मैंने पढ़ा है कि यह सलाह दी जाती है (विशेषकर php 7 के साथ) php फाइलों को बंद न करने के लिए ?>

मेरी कई WP php फाइलें इस तरह समाप्त होती हैं:

<?php get_sidebar(); ?>
<?php get_footer(); ?>

क्या मुझे समापन टैग को हटा देना चाहिए और कुछ ऐसा होना चाहिए

<?php get_sidebar(); ?>
<?php get_footer(); 

मेरी फ़ाइलों के अंत में?


2
अगर आपके बंद नहीं किए गए php टैग के बाद कुछ भी नहीं है, तो यह पूरी तरह से ठीक है, जैसा कि मैंने Laravel जैसे कई फ्रेमवर्क में देखा है, वे फ़ाइलों के अंत में php टैग को बंद नहीं करते हैं, और जिस तरह से, वर्डप्रेस कोर फाइलों ने भी उसी का अनुसरण किया है पैटर्न और php टैग को अंत में बंद नहीं किया है, इसलिए मुझे लगता है कि हमें वर्डप्रेस कोडिंग शैली का पालन करना चाहिए और उन्हें बंद नहीं करना चाहिए।
अमीरसौद 14

जवाबों:


19

हां, कृपया फाइल के अंत में PHP टैग को बंद करने से बचें, न केवल PHP 7 के साथ, बल्कि PHP 5 के साथ भी।

कारण यह है कि यदि आप टैग को बंद करते हैं, तो टैग के बाद जो कुछ भी है, यहां तक ​​कि एक खाली लाइन, आउटपुट पर भेजा जाएगा और PHP को हेडर भेजने के साथ-साथ कुकी को सेट होने से रोकने, काम करने के लिए रीडायरेक्ट, मान्य होने के लिए फ़ीड करेगा, और इसी तरह।

मुझे लगता है कि आपने कभी एक संदेश का सामना किया

शीर्ष लेख की सूचना को संशोधित नहीं किया जा सकता - हेडर पहले से ही (आउटपुट ... पर शुरू ...) लाइन पर ...

?>फ़ाइल के अंत में एक समापन इसका कारण हो सकता है।


1
मेरा मानना ​​है कि यह सही उत्तर है। यहां तक ​​कि अंडरस्कोर , जहां मुझे मूल रूप से मेरा टेम्पलेट मिला, ने नवीनतम अपडेट में समापन टैग को हटा दिया है।
19

@IXN यह सही है यदि पूरी फाइल PHP है और इसलिए इसमें एक ही PHP कोड ब्लॉक (PHP कोड ब्लॉक निहित है जो फ़ाइल के अंत में बंद है)। हालाँकि, यदि आपके पास कई PHP कोड ब्लॉक हैं और HTML और PHP को मिला रहे हैं, जैसा कि आपके प्रश्न में उदाहरण द्वारा निहित है, तो आपको स्पष्ट रूप से PHP कोड ब्लॉक को बंद कर देना चाहिए, क्योंकि TheDeadMedic ने अपने उत्तर में कहा है।
MrWhite

मुझे लगता है कि एकमात्र अपवाद है अगर अंतिम php कोड ब्लॉक html द्वारा पीछा किया जाता है। लेकिन अगर फ़ाइल पर अंतिम प्रतीक हैं?> तो उन्हें छोड़ा जा सकता है। या इसलिए मैं समझता हूं।
IXN

PHP टैग को बंद करने (या शामिल करने) को छोड़ने का मुख्य कारण विकास के दौरान मूर्खतापूर्ण बगों को पेश करने से बचना है। जैसा कि ऊपर बताया गया है, एक पूर्ण PHP फ़ाइल के लिए, यह आकस्मिक आउटपुट से बच सकता है जिसके परिणामस्वरूप त्रुटि हो सकती है। एक फ़ाइल के लिए जो पहले से ही HTML आउटपुट और PHP को मिला रही है, इसके परिणामस्वरूप त्रुटि नहीं हो सकती है। हालाँकि, इस दूसरे मामले में PHP टैग को बंद करने से चूक की संभावना है, क्योंकि अब आपको HTML सामग्री को जोड़ने से पहले PHP टैग को स्पष्ट रूप से बंद करना याद रखना होगा - यह कुछ ऐसा नहीं है जिसे आप पूरी तरह से PHP कोड फ़ाइल में करते हैं।
12

यदि आप WP स्रोत के माध्यम से देखते हैं, तो आप देखेंगे कि (अधिकतर) PHP में अनुगामी PHP टैग को छोड़ दिया जाता है। हालाँकि, टेम्पलेट फ़ाइलें (जो HTML और PHP कोड ब्लॉक को मिलाती हैं) हमेशा समापन PHP टैग को शामिल करती हैं।
MrWhite

11

आपके विशिष्ट उदाहरण को देखते हुए, मैं समापन टैग यानी एक-लाइन फ़ंक्शन कॉल को एक टेम्पलेट के भीतर रखूंगा। यह सुसंगत और एड्स स्पष्टता है (उसी तरह वर्डप्रेस एरियर्स के लिए ट्रेलिंग कॉमा की सलाह देते हैं ) - अन्यथा कल्पना करें कि क्या किसी गैर-डेवलपर ने आपकी फ़ाइल को उठाया और इसे जोड़ना शुरू किया:

<?php get_footer();

<div>What the hell am I doing wrong?</div>

हालांकि, अन्य सभी फाइलों (कार्यों, आदि) के लिए, सलाह सबसे अच्छा विचार है:

<?php // Start of file

class MY_Class {
    function just_do_it() {
    }
}

// Bye bye closing tag

मुझे लगता है कि यह क्लीनर है, और जैसा कि अन्य ने उल्लेख किया है, खतरनाक "हेडर पहले से ही भेजे गए" का कोई जोखिम नहीं है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.