ฉันอ่านคำถามนี้ไปที่ 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>');
?>
วิธีที่สองดีกว่าไหม? มีวิธีที่ดีกว่านี้อีกหรือไม่