Tôi đã đọc câu hỏi này trên stackoverflow:
/programming/104516/calling-php-fifts-within-heredoc-strings
và câu trả lời được chấp nhận nói để làm các mẫu PHP đơn giản như thế này:
mẫu.php:
<html> <đầu> <title> <? = $ title?> </ title> </ đầu> <cơ thể> <? = getContent ()?> </ cơ thể> </ html>
chỉ mục.php:
<? $ title = 'Tiêu đề demo'; hàm getContent () { trở lại '<p> Xin chào thế giới! </ p>'; } bao gồm ('template.php'); ?>
Đối với tôi ở trên không có cấu trúc tốt theo nghĩa là template.php phụ thuộc vào các biến được định nghĩa trong các tập lệnh khác. Và bạn đang sử dụng một tệp bao gồm () để thực thi mã khi bạn thực hiện include('template.php')
(trái ngược với việc sử dụng hàm bao gồm () để bao gồm một lớp hoặc một hàm không được thực thi ngay lập tức).
Tôi cảm thấy như một cách tiếp cận tốt hơn là bọc mẫu của bạn bên trong một hàm:
mẫu.php:
<? mẫu hàm ($ title, $ content) { ob_start (); ?> <html> <đầu> <title> <? = $ title?> </ title> </ đầu> <cơ thể> <? = $ nội dung?> </ cơ thể> </ html> <? php trả về ob_get_clean (); } ?>
chỉ mục.php:
<? allow_once ('template.php'); mẫu in ('Tiêu đề demo', '<p> Xin chào thế giới! </ p>'); ?>
Là cách tiếp cận thứ hai tốt hơn? Có cách nào tốt hơn để làm điều đó?