หากต้องการตอบคำถามของคุณโดยตรง: ไม่ต้องสะท้อนข้อความหรือ 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 จำนวนมากโดยไม่มีเหตุผล (บางครั้งก็มีเหตุผล)
วิธีปฏิบัติที่ดีที่สุดคือการมีตรรกะและทำเสียงฮึดฮัดของคุณในไฟล์ที่ไม่มี HTML ใด ๆ เพียง PHP
วิธีที่ฉันชอบทำคือใช้กรอบ MVC ฉันมี PHP บริสุทธิ์ในรูปแบบและตัวควบคุมและส่วนผสมของ HTML และ PHP ในมุมมอง คุณไม่ต้องการกรอบ MVC คุณสามารถผสาน HTML ของคุณลงในไฟล์เทมเพลตซึ่งคุณรวมไว้ในไฟล์ PHP ล้วนๆ
เมื่อคุณมีตัวแปรของคุณ (ซึ่งไม่รวม HTML ในตัว) สร้างขึ้นในไฟล์ PHP ล้วนคุณสามารถส่งต่อไปยังไฟล์ด้วย HTML ของคุณ มีและมีเพียงอย่างเดียวก็คือมันดีที่จะผสม HTML และ PHP แต่นี่เป็นสิ่งสำคัญ แต่เมื่อทำงานกับไฟล์ที่มี HTML ให้ใช้ PHP ให้น้อยที่สุด
โชคดีที่ PHP มาพร้อมกับเครื่องมือที่เป็นมิตรเพื่อให้ PHP อ่านง่ายขึ้นเมื่อผสมกับ html
ไวยากรณ์ทางเลือก
แนวทางปฏิบัติที่ดีที่สุดคือการใช้ไวยากรณ์ PHP ปกติเมื่อเขียน PHP บริสุทธิ์ แต่เป็นไวยากรณ์ทางเลือกเมื่อผสม PHP และ HTML
ในไฟล์ PHP ปกติโดยไม่มี HTML:
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 ของเราซึ่งเป็นการปรับปรุง แต่เราสามารถไปต่อ
ขอให้สังเกตว่าวงเล็บปีกกา uninformative ปิดคืออะไร? เราไม่รู้ว่ามันกำลังปิดลูปหรือคำสั่ง if สิ่งนี้ดูเหมือนเล็กน้อยในตัวอย่างข้างต้น แต่มักจะมีหลายบรรทัด HTML ใน if / endif ภายใน loop / endloop
แนวปฏิบัติที่ดีที่สุดคือในไฟล์ที่ผสม 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>
ซึ่งอ่านได้มากขึ้น
เราจะไปต่อได้หรือไม่ ใช่. การใช้ระบบ templating ต่างๆคุณสามารถทำสิ่งต่าง ๆ เช่น:
<li>{thing}</li>
ซึ่งอ่านได้อย่างน่าอัศจรรย์ อย่างไรก็ตามระบบ Templating นั้นเป็นวิธีที่อยู่นอกขอบเขตของคำถามเดิม (ซึ่งฉันทิ้งไว้นานแล้ว)