Как написать класс / функцию, которая возвращает большое количество HTML - PullRequest
1 голос
/ 29 августа 2011

Я привык использовать include с большими кусками html вне кода php, но я пытаюсь перейти к классам или функциям, потому что они обладают повышенной гибкостью и потенциалом для шаблонов проектирования и т. Д.Мне сейчас нужна функция, которая будет возвращать большое количество html, смешанного с некоторыми переменными php, но я ищу, чтобы код оставался вне объявления <?php, чтобы он был отформатирован как правильный HTML иимейте подсказку кода, а не гигантскую строку.

Если это возможно, как бы мне было отформатировать / записать это?

Ответы [ 3 ]

3 голосов
/ 29 августа 2011

Я бы сделал что-то вроде этого ...

function getPage() {
    ob_start();
    include("file_with_html.php");
    $content = ob_get_clean();
    return $content;
}

Конечно, вы можете добавлять другие функции по мере необходимости.Но преимущество здесь в том, что вы используете буферизацию вывода.Без этого данные отправляются пользователю сразу.Но, используя ob_start() и ob_get_clean(), вы можете вернуть его и поработать с ним еще.

2 голосов
/ 29 августа 2011

Вы можете использовать include('somefile.html');.

include работает и с ванильным HTML.

Если вам нужно «смешать его с некоторыми переменными php», просто добавляйте их, когда они вам нужны. Помните: PHP по своей природе является языком шаблонов.

Например:

outerHTML.php:

<?php function generateCode($username) { ?>

    <h1>Welcome back, <?php echo $username; ?></h1>
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
    </ul>

<?php } ?>

main.php:

<?php

// some PHP code

include('outerHTML.php');

generateCode('John');

// some more PHP code

?>
1 голос
/ 29 августа 2011

Кроме того, вы можете использовать буферизацию вывода в ваших классах.Смотрите комментарии на http://php.net/manual/en/function.ob-start.php

...