Опубликован: 08.05.2007 | Уровень: для всех | Доступ: платный
Лекция 2:

Основная структура документа

< Лекция 1 || Лекция 2 || Лекция 3 >
Аннотация: Прочитав эту лекцию вы узнаете, как PHP встраивается в XHTML, а также научитесь писать комментарии и выводить текст на экран браузера

Соединение XHTML и PHP

Код PHP обычно объединяется с тегами XHTML. PHP является встраиваемым языком — это означает, что можно перемещаться между чистым кодом HTML и PHP, не жертвуя возможностью чтения текста.

Чтобы встроить код PHP в XHTML, PHP должен задаваться обособленно, с помощью начального и конечного тегов PHP. Теги PHP говорят серверу Web, где начинается и заканчивается код PHP. Анализатор PHP распознает три варианта начального и конечного тегов.

  • Стиль XML
    <?php
    Блок кода PHP 
    ?>

    Первый вариант тегов PHP называется тегами в стиле XML и является предпочтительным стилем. Он работает в документах Расширяемого языка разметки (XML). Этот метод должен использоваться при соединении PHP с документами XML и XHTML. Примеры в этом учебнике применяют этот формат тегов XML.

  • Сокращенный стиль
    <?
    Блок кода PHP 
    ?>

    Сокращенный стиль является самым простым, однако, он не рекомендуется, так как вступает в противоречие с объявлениями документов XML.

  • Стиль сценария (script)
    <script language="php">
    Блок кода PHP 
    </script>

    Этот стиль использует самую длинную запись и похож на стиль тегов, применяемых с JavaScript. Этот стиль является предпочтительным при использовании редактора HTML, который не распознает другие стили тегов. Так как большинство новых редакторов XHTML распознают стиль тегов XML, то использование этого стиля не рекомендуется.

Блоки сценария могут размещаться в любом месте документа XHTML, в том месте, где сценарий создает и показывает свой вывод. Следующий пример страницы XHTML иллюстрирует использование трех форматов тегов сценария.

<!DOCTYPE html PUBLIC "-//W3C//DTD/XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml11-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <title>Страница Web </title>
</head>
<body>

<p>
<?php echo "Это базовый документ PHP";?>
</p>

<p>
<? print "PHP – это здорово!";?>
</p>

<p>

<script language="php">
$myvar = "Hello World! ";
echo $myvar;
</script>

</p>

</body>
</html>

В предыдущем примере три блока PHP включены в документ XHTML. Первый блок использует открывающий и закрывающий теги <?php ... ?>. Сегмент кода использует оператор PHP echo для вывода строки "Это базовый документ PHP" в окне браузера.

Второй блок применяет теги <? ... ?> для пометки начала и конца кода PHP. Этот раздел применяет оператор PHP print (другое имя оператора echo ) для вывода на экране текста "PHP – это здорово!".

Наконец, третий блок использует блок сценария <script language="php"> ... </script> для определения начала и конца кода PHP. В коде строка "Hello World!" присваивается переменной $myvar, а оператор echo выводит значение $myvar в окне браузера.

Это базовая страница PHP.  

PHP – это здорово!

Hello World!

Пример показанного выше кода включает теги XHTML, теги PHP, операторы PHP и разделители. Когда пользователь запрашивает страницу PHP, сервер обрабатывает весь код PHP. Когда страница PHP просматривается в окне браузера, выводится только текст между открывающим и закрывающим тегами XHTML или PHP. Никакой реальный код PHP не виден при просмотре исходного кода в окне браузера. Причина в том, что интерпретатор PHP выполняет сценарий на сервере и заменяет код результатом вывода работы сценария. Только этот вывод передается браузеру. Это одна из характеристик, которая делает PHP серверным языком сценариев, в отличие от JavaScript, языка сценариев клиента.

Вывод контента

PHP содержит два основных оператора для вывода текста в браузере Web: echo и print.

Оба оператора, echo и print, кодируются между открывающим и закрывающим тегами блока кода PHP и могут находиться в любом месте в документах XHTML.

Операторы echo и print используют следующий формат:

echo – используется для вывода одной или нескольких строк.

echo "Выводимый текст";

print – используется для вывода строки. В некоторых случаях оператор print предлагает большую функциональность, чем оператор echo. Это будет рассмотрено далее в учебнике. Пока print можно считать другим именем оператора echo.

print "Выводимый текст";

Следующие примеры демонстрируют использование и размещение команд echo и print в документе XHTML.

<!DOCTYPE html PUBLIC "-//W3C//DTD/XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml11-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <title>Страница Web</title>
</head>
<body>

<p>

<?php 
echo "Это базовый документ PHP";
?>

</p>

</body>
</html>

В большинстве случаев необходимо выводить целые параграфы в окне браузера или создавать переносы строк при выводе контента. По умолчанию операторы echo и print не создают автоматические переносы строк, необходимо использовать тег <p> или <br> для создания параграфов или переносов строк. Разделители, создаваемые в редакторе XHTML с помощью возврата каретки, пробелов и табуляции, игнорируются процессором PHP.

В следующем примере тег параграфа XHTML включается в оператор PHP echo. В PHP теги XHTML можно применять в операторах print и echo для форматирования вывода. В этих случаях вывод необходимо заключать в двойные кавычки (""), чтобы гарантировать, что браузер не интерпретирует тег буквально и не выведет его как часть строки вывода.

echo "<p>Параграф 1</p>";
echo "<p>Параграф 2</p>";

Без использования тега параграфа XHTML предыдущие операторы echo будут выводить контент в следующем виде:

Параграф 1 Параграф 2

При включении тегов параграфов операторы выводятся как два отдельных параграфа.

Параграф 1

Параграф 2

Терминатор инструкции

Каждая строка кода PHP должна завершаться терминатором инструкции (признаком конца), в качестве которого используется точка с запятой (;). Терминатор инструкции применяется для отделения одного множества инструкций от другого.

Отсутствие терминатора инструкции может приводить к ошибкам в работе интерпретатора PHP и выводу ошибок в окне браузера. Следующий фрагмент кода показывает распространенную ошибку отсутствия терминатора инструкции.

<!DOCTYPE html PUBLIC "-//W3C//DTD/XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml11-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <title>Страница Web </title>
</head>
<body>

<p>

<?php 

echo "Эта строка порождает ошибку"
echo "В предыдущей строке отсутствует терминатор инструкции";

?>

</p>
</body>
</html>

В этом примере в первом операторе echo пропущен терминатор инструкции. Так как интерпретатор PHP не может определить конец первого оператора echo и начало второго, то происходит ошибка. В зависимости от настроек Обработки ошибок (Error Handling) интерпретатора, будет выводиться сообщение об ошибке или браузер выведет просто пустую страницу.

Далее показано типичное сообщение об ошибке, которое выводится, когда пропущен терминатор инструкции:

Parse error: syntax error, unexpected T_PRINT in C:\ApacheRoot\test.php on line 11 
Ошибка при разборе: синтаксическая ошибка, непредвиденный T_PRINT в ... в строке  11

Как можно видеть, сообщения об ошибках PHP достаточно загадочны по своей природе. Отсутствие терминатора инструкции является распространенной ошибкой среди новичков PHP. Со временем появится привычка проверять каждую строку на наличие терминатора инструкции.

Комментарии в коде

Комментарии применяются в PHP для записи собственных замечаний во время процесса разработки кода. Такие комментарии могут определять назначение сегмента кода или их можно использовать для исключения блоков кода во время тестирования и отладки сценариев.

Синтаксический анализатор PHP игнорирует комментарии. Комментарии в PHP можно определить одним из следующих способов:

// — простой комментарий PHP;

# — альтернативный простой комментарий PHP;

/*...*/ — многострочные блоки комментариев.

<!DOCTYPE html PUBLIC "-//W3C//DTD/XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml11-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <title>Страница Web </title>
</head>
<body>

<p>

<?php 

// Простой комментарий PHP 
#  Другой тип простого комментария PHP 

/* Многострочный блок комментария PHP 
Он может занимать любое необходимое 
количество строк */

?>

</p>
</body>
</html>
< Лекция 1 || Лекция 2 || Лекция 3 >
Максим Матросов
Максим Матросов
Наталья Джабасова
Наталья Джабасова
Manvel Sedrakyan
Manvel Sedrakyan
Армения, Erevan
Светлана Железнякова
Светлана Железнякова
Россия, г.Новокуйбышевск