Trong PHP, khai báo chuỗi HEREDOC thực sự hữu ích để xuất ra một khối html. Bạn có thể phân tích cú pháp trong các biến chỉ bằng cách đặt tiền tố cho chúng bằng $, nhưng đối với cú pháp phức tạp hơn (như $ var [2] [3]), bạn phải đặt biểu thức của mình bên trong dấu ngoặc nhọn {}.
Trong PHP 5, nó là có thể thực hiện cuộc gọi chức năng trong {} niềng răng bên trong một chuỗi HEREDOC, nhưng bạn phải đi qua một chút về công việc. Bản thân tên hàm phải được lưu trữ trong một biến và bạn phải gọi nó giống như một hàm có tên động. Ví dụ:
$fn = 'testfunction';
function testfunction() { return 'ok'; }
$string = <<< heredoc
plain text and now a function: {$fn()}
heredoc;
Như bạn có thể thấy, điều này hơi lộn xộn hơn là chỉ:
$string = <<< heredoc
plain text and now a function: {testfunction()}
heredoc;
Có những cách khác ngoài ví dụ mã đầu tiên, chẳng hạn như thoát ra khỏi HEREDOC để gọi hàm hoặc đảo ngược vấn đề và thực hiện điều gì đó như:
?>
<!-- directly output html and only breaking into php for the function -->
plain text and now a function: <?PHP print testfunction(); ?>
Cái sau có nhược điểm là đầu ra được đưa trực tiếp vào luồng đầu ra (trừ khi tôi đang sử dụng bộ đệm đầu ra), điều này có thể không như tôi muốn.
Vì vậy, bản chất của câu hỏi của tôi là: có cách nào thanh lịch hơn để tiếp cận điều này không?
Chỉnh sửa dựa trên phản hồi: Có vẻ như một loại công cụ mẫu nào đó sẽ giúp cuộc sống của tôi dễ dàng hơn nhiều, nhưng về cơ bản nó sẽ yêu cầu tôi đảo ngược phong cách PHP thông thường của mình. Đó không phải là điều xấu, nhưng nó giải thích cho sức ì của tôi .. Mặc dù vậy, tôi đang cố gắng tìm ra cách để làm cho cuộc sống dễ dàng hơn, vì vậy tôi đang xem xét các khuôn mẫu.
Text {$string1} Text {$string2} Text
trong heredoc.