Лучший HTML в возвращаемой функции?
Я могу написать HTML-код в строке и вернуть его, но он всегда выглядит немного грязно. Есть ли лучшее решение для этого?
Пример 1 - Новая строка HTML
Новая строка для каждой строки с HTML. Очень грязный способ написания HTML-кода.
function my_function()
{
$html = '<div class="hello">';
$html .= 'A very long text';
$html .= '</div>';
return $html;
}
Пример 2 - блок HTML
Все еще грязный способ написать код HTML. Другим недостатком является то, что труднее писать "цитировать" символы.
function my_function()
{
$html = '
<div class="hello">
A very long text
</div>';
return $html;
}
Пример 3 - ob_get_contents
Я мог бы использовать ob_get_contents. Это отделяет мой PHP от моего HTML, хорошо! Но я прочитал, что это плохая производительность.
function my_function()
{
ob_start();
?>
<div class="hello">
A very long text
</div>';
<?php
$html = ob_get_contents();
ob_end_clean();
return $html;
}
Вопрос
Есть ли другой способ сохранить HTML из PHP хорошим способом?
4 ответа
Вы можете использовать форму шаблонов, где ваша HTML-структура хранится в файлах шаблонов со значениями заполнителей, которые вы читаете, и заменить значения заполнителей реальным содержимым.
Таким образом, вы просто читаете строку, делаете несколько "замен" для преобразования и возвращаете результат.
И да и нет,
любой из 3-х примеров далеко от цели "держать php подальше от html". И внутри они ничем не лучше других.
Не рекомендуется держать уровень представления связанным с логикой.
Ни одно из решений не является тем, что мы могли бы назвать прямо вперед для начинающих. Самым простым с более короткой кривой обучения было бы просто использовать шаблонизатор, например, smarty.
Это поможет вам сохранить презентацию в стороне от вашего кода.
Но общепринятой стратегией для этого является MVC, разделяющий программное обеспечение на 3 уровня. Представление модели и контроллер. Эта статья дает простое объяснение того, что mvc ориентирован на php.
http://onlamp.com/pub/a/php/2005/09/15/mvc_intro.HTML
Есть другие архитектуры и практики, которые многие считают лучше, но это основы, которым я верю.
Простая идея, разделяющая их:
//php function
function stuff(){
$arr = array();
$arr['text'] = 'A very long text';
$arr['class'] = 'hello';
return $arr;
}
HTML-страница:
<html>
<?php $thing = stuff(); ?>
<div class="<?php echo $thing['class']; ?>">
<?php echo $thing['text']; ?>
</div>
</html>
"Есть ли другой способ сохранить HTML от PHP хорошим способом?"