Я - довольно опытный кодер PHP и просто задаюсь вопросом, что лучший способ повторить большие блоки кода HTML (наиболее успешная практика).
Лучше сделать это:
<?php
echo "<head>
<title>title</title>
<style></style>
</head>";
?>
или это:
<?php
define("rn","\r\n");
echo "<head>".rn
."<title>title</title>".rn
."<style></style".rn
."</head>".rn;
?>
Я склонен использовать второе, поскольку это не портит расположение с отступом в php источнике. Действительно ли это - способ, которым большинство людей делает это?
IMO, лучше всего хранить HTML отдельно в файле шаблона. Это файл, который обычно содержит HTML с некоторыми полями, которые необходимо заполнить. Затем вы можете использовать некоторую структуру шаблонов для безопасного заполнения полей в HTML-документе по мере необходимости.
Smarty - один из популярных фреймворков, вот пример того, как он работает (взят из ускоренного курса Smarty).
Файл шаблона
<html>
<head>
<title>User Info</title>
</head>
<body>
User Information:<p>
Name: {$name}<br>
Address: {$address}<br>
</body>
</html>
PHP-код, который вставляет имя и адрес в файл шаблона:
include('Smarty.class.php');
// create object
$smarty = new Smarty;
// assign some content. This would typically come from
// a database or other source, but we'll use static
// values for the purpose of this example.
$smarty->assign('name', 'george smith');
$smarty->assign('address', '45th & Harris');
// display it
$smarty->display('index.tpl');
Помимо Smarty существует множество разумных вариантов для шаблонных фреймворков, которые соответствуют вашим вкусам. Некоторые из них просты, многие обладают довольно сложными функциями.
Вы также можете разместить свой HTML за пределами блока кода PHP:
<?php
// PHP code
?>
<head>
<title>title</title>
<style></style>
</head>
<?php
// further PHP code
?>
Я думаю, что это не лучшее решение. Повторение html не очень читается. Я всегда помещаю html вне тегов php. Таким образом, вы получите отступ, и он будет более читабельным.
Примерно так:
?>
<head>
<title>title</title>
<style></style>
</head>
<?php
И если вы хотите пойти дальше, вы можете использовать систему шаблонов, чтобы действительно отделить логику от представления.
Не забывайте, что у вас также есть доступ к HEREDOC ( http://www.php.net/manual/en/language.types.string. php # language.types.string.syntax.heredoc )
echo <<< HERE
<head>
<title>title</title>
<style></style>
</head>
HERE;
Кроме того, я хотел бы изучить что-то вроде шаблонов Smarty - и, что более важно, шаблон проектирования MVC, который обеспечивает отделение разметки от бизнес-логики.
синтаксис heredoc пользователя
echo <<<NO_MORE
<head>
<title>title</title>
<style></style>
</head>
NO_MORE;
или просто выйти из HTML-вывода php напрямую ?> .. . php
Поскольку уже приведено достаточно альтернатив, я просто прокомментирую ваш второй подход. Если вы хотите сделать это с помощью echo, то лучше использовать:
echo "<head>", PHP_EOL,
"<title>title</title>", PHP_EOL
"<style></style", PHP_EOL
"</head>", PHP_EOL;
Использование PHP_EOL
вместо пользовательской константы позволяет не засорять глобальную область видимости лишней константой, а также делает newline независимым от ОС, так как будет использоваться то, что определено для ОС, на которой работает PHP.
Использование запятых вместо конкатенации экономит память, так как PHP не нужно конкатенировать вообще, а просто сбрасывать все, что вы бросите в echo.
Если вы используете кавычки для отображения HTML, используйте одинарные кавычки ', потому что PHP ищет переменные в двойных кавычках ", что менее предпочтительно для отображения статических строк. .
Для меня лучшим методом остается метод вне блока PHP, некоторые из них, как и другие, ответили.
Кроме того, не забудьте ярлык.
Первая форма более эффективна, поскольку не выполняет конкатенацию строк (.
).