Combining String Literals And Variables In PHP
Trong PHP, chúng ta có nhiều cách để kết hợp chuỗi và biến. Bài viết này sẽ phân tích các phương pháp và đề xuất cách tốt nhất (Heredoc).
Heredoc - Giải pháp tối ưu
Mình đưa ra phương án mà mình thấy tốt nhất là heredoc. Bạn có thể thực hiện
code PHP trong dấu {} bên trong heredoc.
<?php
$image = $value['item']['image'];
$image_mobile = $value['item']['image_mobile'];
echo <<<TEXT
<div class="slider-item">
<div class="item-image">
<img class="md" src="$image" alt="">
<img class="sm" src="{$about['title']}" alt="">
</div>
</div>
TEXT;
?>
Các phương pháp phổ biến
- Single quotes with concatenation:
'Variable is ' . $var; - Double quotes:
"Variable is {$var}"; - Sprintf:
sprintf('Variable is %s', $var); - Heredoc (như ví dụ trên).
Tại sao chọn Heredoc?
Heredoc giúp code dễ đọc hơn, tránh việc phải escape dấu ngoặc kép (quote) nhiều lần và cho phép viết HTML block một cách tự nhiên.
So sánh:
Concatenation (Khó đọc):
$str = '<div class="container"><p style="font-size:' . $size . 'px;">' . $text . '</p></div>';
Heredoc (Dễ đọc):
$str = <<<STR
<div class="container">
<p style="font-size:{$size}px;">$text</p>
</div>
STR;
Kết luận
Sử dụng Heredoc hoặc Double quotes cho các trường hợp đơn giản. Tránh Concatenation quá nhiều vì sẽ gây rối mắt (maintenance nightmare). Sprintf mạnh mẽ nhưng xử lý chậm hơn một chút.