ฉันอ่านคำถามนี้ไปที่ stackoverflow:
/programming/104516/calling-php-functions-within-heredoc-strings
และคำตอบที่ได้รับการยอมรับบอกว่าจะทำแม่แบบ PHP ธรรมดาดังนี้:
template.php:
<html> <head> <title> <? = $ ชื่อ?> </ title> </ head> <body> <? = getContent ()?> </ body> </ html>
index.php:
<php? $ title = 'ชื่อการสาธิต'; ฟังก์ชัน getContent () { ส่งคืน '<p> Hello World! </p>'; } รวมถึง ( 'template.php'); ?>
สำหรับฉันข้างต้นไม่ได้มีโครงสร้างที่ดีในแง่ที่ template.php ขึ้นอยู่กับตัวแปรที่กำหนดไว้ในสคริปต์อื่น ๆ และคุณใช้การรวม () เพื่อเรียกใช้รหัสเมื่อคุณทำinclude('template.php')
(ต่างจากการใช้การรวม () เพื่อรวมคลาสหรือฟังก์ชันที่ไม่ได้ดำเนินการทันที)
ฉันรู้สึกว่าวิธีที่ดีกว่าคือการห่อเทมเพลตของคุณไว้ในฟังก์ชัน:
template.php:
<php? ฟังก์ชั่นเทมเพลต ($ title, $ content) { ob_start (); ?> <html> <head> <title> <? = $ ชื่อ?> </ title> </ head> <body> <? = เนื้อหา $?> </ body> </ html> <? php return ob_get_clean (); } ?>
index.php:
<php? require_once ( 'template.php'); เทมเพลตพิมพ์ ('ชื่อตัวอย่าง', '<p> Hello World! </p>'); ?>
วิธีที่สองดีกว่าไหม? มีวิธีที่ดีกว่านี้อีกหรือไม่