सीधे अपने प्रश्न का उत्तर देने के लिए: स्थिर टेक्स्ट या HTML को कभी भी इको न करें । अपने PHP के बाहर छोड़ दें।
<?php echo "<p>Hello World</p>"; // Alway wrong. ?>
<p>Hello World</p> <!-- Does the same thing, faster, and is more readable. -->
PHP से बचना एक बर्बादी है अगर आप जो करने जा रहे हैं वह सभी स्थैतिक पाठ या स्थिर html में पास होता है। अंदर के सभी कोड की <?php ?>
व्याख्या करने के लिए PHP में भेजा जाता है। इसका मतलब है कि आपकी वेबसाइट धीमी है और अगर आप बिना किसी कारण के PHP में बड़ी मात्रा में स्थैतिक पाठ पारित कर रहे हैं तो आप बिजली बर्बाद कर रहे हैं। (कभी-कभी कोई कारण होता है।)
सबसे अच्छा अभ्यास यह है कि बिना किसी एचटीएमएल, केवल PHP के फाइलों में अपने तर्क और ग्रन्ट कार्य हों।
जिस तरह से मैं ऐसा करना चाहता हूं वह एमवीसी ढांचे के साथ है। मेरे पास मॉडल और नियंत्रकों में शुद्ध PHP और विचारों में HTML और PHP का मिश्रण है। आपको MVC फ्रेमवर्क की आवश्यकता नहीं है; आप बस HTML के अपने मिश्रण को टेम्पलेट फ़ाइलों में चिपका सकते हैं, जिसे आप अपनी शुद्ध PHP फ़ाइलों में शामिल करते हैं।
एक बार जब आपके पास आपके चर (जो उनमें HTML शामिल नहीं होते हैं) शुद्ध PHP फ़ाइलों में बनाए जाते हैं, तो आप उन्हें अपने HTML के साथ फ़ाइल से पास कर सकते हैं। वहाँ, और केवल वहाँ, यह HTML और PHP मिश्रण करने के लिए ठीक है। लेकिन, और यह एक महत्वपूर्ण लेकिन, जब HTML वाली फ़ाइलों के साथ काम करते हैं, तो PHP को कम से कम रखें।
सौभाग्य से, PHP html के साथ मिश्रित होने पर PHP को पढ़ने के लिए आसान बनाने के लिए अनुकूल उपकरण के साथ आता है।
वैकल्पिक सिंटैक्स
शुद्ध PHP लिखते समय नियमित PHP सिंटैक्स का उपयोग करना सबसे अच्छा अभ्यास है, लेकिन PHP और HTML को मिलाते समय वैकल्पिक सिंटैक्स।
बिना HTML के नियमित PHP फाइलों में:
if ($something) {
do_something(); // do_something() shouldn't echo or print.
}
यह शुद्ध PHP के लिए सुंदर है, लेकिन HTML से बचते समय आदर्श नहीं है। विशेष रूप से, समापन ब्रेसिज़ अक्सर समझना मुश्किल होता है जब वे HTML के बड़े ढेर में दिखाते हैं।
ऐसा लगता है, आपके प्रश्न के आधार पर, जो आपने HTML और PHP को मिलाकर एक फ़ाइल में लिखा होगा:
<?php
if ($something) {
echo '<p>Hello World.</p>';
}
?>
ऊपर वर्णित कारणों के लिए, हम चाहते हैं कि HTML को PHP में न भेजा जाए। हम ऐसा करते हैं:
<?php if ($something) { ?>
<p>Hello World.</p>
<?php } ?>
हमें हमारा HTML हमारे PHP टैग्स से मिल गया, जो एक सुधार है। लेकिन हम और आगे जा सकते थे।
ध्यान दें कि बंद करने वाला ब्रेसिन कितना असंगत है? हमें नहीं पता कि यह एक लूप बंद कर रहा है या यदि एक बयान। यह उपर्युक्त उदाहरण में मामूली लगता है, लेकिन अगर लूप / एंडोस्कोप के अंदर / एंडिफ़ के अंदर एचटीएमएल की दर्जनों लाइनें हैं।
सबसे अच्छा अभ्यास यह है कि PHP और HTML को मिलाने वाली फ़ाइल में, आप वैकल्पिक सिंटैक्स का उपयोग करते हैं, जो ब्रेसिज़ खोलने और बंद करने में चूक करता है { }
:
<?php if ($something): ?>
<p>Hello world.</p>
<?php endif; ?>
एक तरफ नई वाक्य रचना के शब्दों से ( :
और endif;
के बजाय {
और }
), तो आपको दो चीजों पर ध्यान देना चाहिए:
- फिर से, HTML और पाठ, जबकि PHP द्वारा नियंत्रित किया जाता है,
<?php ?>
टैग से बाहर है , इसलिए इसकी व्याख्या नहीं की जाती है। ऊपर वर्णित कारणों के लिए, यह अच्छा है।
- यह बहुत अधिक जानकारीपूर्ण है अगर यह सभी यादृच्छिक बंद ब्रेसेस (
<?php } ?>
) बंद करने वाली चीजों सहित php थे जो कि वे जहां खोले गए हैं, उन्हें ढूंढना मुश्किल है (क्योंकि वे HTML की गड़बड़ी के साथ मिश्रित हैं)। फिर, छोरों के साथ और यदि कथन में एक बड़ी HTML फ़ाइल की कल्पना करें। यह निर्दिष्ट करना कि आप क्या बंद कर रहे हैं, बहुत कुछ स्पष्ट कर सकता है।
समान टेम्प्लेट फ्रेंडली सिंटैक्स का उपयोग लूप के लिए भी किया जा सकता है:
<?php foreach ($things as $thing): ?>
<li><?php echo $thing; ?></li>
<?php endforeach; ?>
संक्षिप्त टैग
PHP द्वारा प्रदान किया गया एक और महान उपकरण, जो, फिर से, आप केवल PHP और HTML को एक साथ मिलाकर उपयोग करना चाहते हैं, यह छोटा टैग है। आपको php.ini फ़ाइल में छोटे टैग चालू करने पड़ सकते हैं। एक बार चालू होने के बाद, लघु टैग सब कुछ और भी पठनीय बनाते हैं।
छोटे टैग के बिना, आपको लिखना होगा <?php echo $something; ?>
लेकिन छोटे टैग के साथ आप लिख सकते हैं <?=$something?>
और इसका सटीक परिणाम भी होगा।
लघु टैग और वैकल्पिक PHP सिंटैक्स को मिलाते हुए, आप वास्तव में कुछ सुरुचिपूर्ण HTML फ़ाइलें लिख सकते हैं, जिसमें PHP तत्व शामिल हैं। हमारे पिछले लूप उदाहरण (लूप के अंदर का हिस्सा) को लेते हुए, लघु टैग हमें कम करने की अनुमति देते हैं:
<li><?php echo $thing; ?></li>
सेवा मेरे
<li><?=$thing?></li>
जो बहुत अधिक पठनीय है।
क्या हम और आगे जा सकते थे? हाँ। विभिन्न टेम्प्लेटिंग सिस्टम का उपयोग करके आप निम्न कार्य कर सकते हैं:
<li>{thing}</li>
जो आश्चर्यजनक रूप से पठनीय है। हालांकि, अस्थायी प्रणाली, मूल प्रश्न के दायरे से बाहर हैं (जो मैंने वैसे भी थोड़ी देर पहले छोड़ दिया था)।