В предыдущих главах описывались основы PHP. На примерах использования отдельных функций вы познакомились с основными проблемами программирования. Но все продемонстрированные ранее примеры были фрагментарными, выбранными здесь для иллюстрации применения конкретного оператора языка PHP. В этой главе показано, каким образом можно интегрировать PHP в Web-узел. Это поможет разработчику понять, создавать ли Web-узел полностью с помощью PHP, использовать ли PHP в разных местах Web-узла или создать несколько страниц, которые будут функционировать с помощью PHP. Кроме того, в главе описывается, как использовать PHP для генерирования HTML-кода.
26.1. Вставка PHP-кода в HTML-документы
Первым и наиболее очевидным подходом при работе с PHP является создание HTML-файлов в обычном стиле: попеременное использование PHP- и HTML-тегов. Повторяющийся HTML-код можно заменить вызовом функций PHP. Большой фрагмент PHP-кода может генерировать вывод из базы данных или представлять собой сценарий ввода данных в форму. Все это ситуации, в которых долю PHP-кода в Web-узле нельзя назвать существенной, но в качестве первого шага для новичков на стезе такого программирования это очень неплохо. Для приобретения опыта можно вставить небольшие фрагменты PHP-кода, а затем можно постепенно переносить основную нагрузку на PHP.
Кроме таких простейших задач, как вставка текущей даты с помощью кода <?php print(date('Y/m/d')); ?>, можно создать функцию, которая бы включала в себя блок HTML-кода. В листинге 26.1 задается класс для печати HTML-таблиц. 
Листинг 26.1. Функция форматирования

<?php /*
** Простейший класс для создания HTML-таблиц */
class HTMLTable {
static function start($header=FALSE)
{
print("<table border="1">n");
if(is_array($header))
{
print("<tr>n"); foreach($header as $h)
{
print("<th>" .
strtoupper($h) . "</th>n");
}
print("</tr>n");
}
}
static function end()
{
print("</table>nn");
}
static function printRow($label, $field)
{
print("<tr>n"); //Описание
if($label !== "")
{
print("<th>" .
strtoupper($label) . "</th>n");
}
if(!is_array($field))
{
$field = array($field);
}
foreach($field as $key=>$value)
{
print("<td>"); if($value === "")
{
print("&nbsp;");
}
else
{
print($value);
}
print("</td>n");
}
print("</tr>n"); 
}
static function printSet($set)
{
foreach($set as $field)
{
if(isset($field['label']))
{
$label = $field['label'];
unset($field['label']);
}
else
{
$label = "";
}
HTMLTable::printRow($label, $field);
}
}
}
?>
<html> <head>
<title>Листинг 26.1</title>
</head>
<body>
<p>
Это пример использования функции программирования часто используемых фрагментов HTML-кода. Он выводит таблицу.
</p> <?php
//отобразить таблицу с обозначениями слева
HTMLTable::start();
HTMLTable::printRow('этап 1', 'Начало таблицы');
HTMLTable::printRow('этап 2', 'Печать строк');
HTMLTable::printRow('этап 3', 'Завершение таблицы');
HTMLTable::end();
?> <p>
Класс HTMLTable позволяет отображать все HTML-таблицы в одинаковом стиле. Для того чтобы изменить отображение всех таблиц, необходимо отредактировать класс. Аналогичной технологией является Cascading Style Sheets, но ее реализация в PHP означает, что в данные можно вносить изменения неограниченное число раз перед созданием HTML- кода.
Это также означает, что можно четко идентифицировать данные, не влияя на конечное размещение документа.
</p> <?php
//отобразить таблицу с обозначениями сверху HTMLTable::start(array('artist', 'song')); HTMLTable::printSet(array(
array('Thelonious Monk', 'Bemsha Swing'),
array('John Coltrane', 'Spiral'),
array('Charlie Parker', 'Koko')
)); 
HTMLTable::end();
</body> </html>