Лучший 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.

http://www.smarty.net/

Это поможет вам сохранить презентацию в стороне от вашего кода.

Но общепринятой стратегией для этого является 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 хорошим способом?"

  • Да - Вы должны прочитать о MVC и о том, как реализовать его в PHP (например, используя Smarty)
Другие вопросы по тегам