- Основные конструкции РНР
admin 24 Февраля 2006 в 22:54:38
Основные конструкции РНР
Прежде чем переходить к изложению основного материала, занимающего оставшуюся часть книги, я представлю несколько вспомогательных концепций, относящихся к РНР.
Переход в РНР
Механизм лексического анализа должен как-то отличать код РНР от других элементов страницы. Идентификация кода РНР называется «переходом в РНР» (escaping to РНР). Существуют четыре варианта оформления перехода в РНР:
стандартные теги;
короткие теги;
теги script;
теги в стиле ASP.
Стандартные теги
Стандартные теги используются программистами РНР чаще остальных способов, что объясняется наглядностью и удобством этой формы записи:
У стандартных тегов есть еще одно дополнительное преимущество: за открывающей конструкцией <? следуют символы php, однозначно определяющие тип дальнейшего кода. Это удобно при использовании в одной странице нескольких технологий — таких, как ЖаваСкрипт, серверные включения и РНР. Весь текст, расположенный до закрывающего тега ?>, интерпретируется как код РНР.
Короткие теги
Короткие теги обеспечивают наиболее компактную запись для перехода в РНР:
По умолчанию короткие теги не используются, их нужно специально активизировать. Это можно сделать двумя способами:
указать ключ -enable-short-tags при компиляции РНР;
включить параметр short_open_tag в файл php.ini.
Теги script
Некоторые текстовые редакторы ошибочно принимают код РНР за код HTML (то есть визуально отображаемый текст), что нарушает работу над web-страницей. Проблема решается использованием тегов script:
Четвертый и последний способ оформления внедренного кода РНР — теги в стиле ASP (Active Server Page). Они похожи на короткие теги, описанные выше, однако вместо вопросительного знака используется знак процента (%):
У тегов в стиле ASP есть одна особенность, делающая запись более компактной. Во внедренный код РНР не обязательно включать команду print — знак равенства (=), расположенный сразу же после открывающего тега в стиле ASP, приказывает лексическому механизму РНР вывести значение указанной переменной:
Этот удобный стиль позволяет использовать в страницах фрагменты вида
Этот фрагмент содержит два разных сценария РНР. В первом сценарии переменной $recipe присваивается значение "Lasagna". Позднее, когда потребуется вывести значение $гесiре, специально для этой цели используются теги в стиле ASP. Кстати, такая возможность существует и для коротких тегов (<?...?>).
Внедрение HTML в код РНР
Одной из самых замечательных особенностей HTML является простота использования в сочетании с другими языками — например, HTML и ЖаваСкрипт (см. листинг 1.2).
Листинг 1.2. Вывод кода HTML средствами РНР
Рис. 1.2. Форматирование даты с использованием функции РНР date()
В листинге 1.2 показано, как код HTML интегрируется прямо в команды РНР. В данном примере в код РНР включаются теги заголовка третьего уровня (<h3>...</h3>). В итоговом документе эти теги ничем не отличаются от обычного кода HTML.
В листинге 1.3 продемонстрировано включение динамической информации в web-страницу на примере вывода текущей даты в заголовке окна.
Листинг 1.3. Динамический вывод даты
Простая функция РНР date() форматирует дату одним из нескольких стандартных способов. Отформатированная дата вставляется в заголовок окна.
РНР также позволяет изменять формат конструкций HTML — для этого соответствующая характеристика тега присваивается переменной, вставляемой в файл. В листинге 1.4 эта возможность продемонстрирована на примере присваивания характеристики шрифта (h3) переменной $big_font и ее последующего использования при выводе текста.
Листинг 1.4. Динамические теги HTML
Листинг 1.4 представляет собой разновидность листинга 1.3 — на этот раз тег заголовка (<h3>...</h3>) сначала присваивается переменной, а затем эта переменная используется в команде print. В итоговом документе эти теги ничем не отличаются от обычного кода HTML.
Включение нескольких сценариев РНР
Для обеспечения необходимой гибкости при построении динамических web-приложений можно внедрить в страницу несколько сценариев РНР (листинг 1.5).
Листинг 1.5. Включение нескольких сценариев РНР в один документ
Листинг 1.5 начинается как типичная (пусть несколько упрощенная) страница
HTML. При внедрении нескольких сценариев переменные, значения которых были
присвоены в одном сценарии, могут использоваться в другом сценарии той же
страницы.
Комментарии в коде РНР
Комментарии следует использовать даже в относительно простых и незамысловатых сценариях. В РНР существуют два формата комментариев:
Однострочные комментарии обычно используются для коротких пояснений или примечаний, относящихся к локальному коду.
Многострочные комментарии обычно используются при оформлении алгоритмов на псевдокоде и в более подробных объяснениях.
Оба способа в конечном счете приводят к одинаковому результату и совершенно не влияют на общее быстродействие сценария. Выбор варианта остается за вами.
Однострочные комментарии
При оформлении однострочных комментариев используется два стиля комментирования. Оба стиля работают абсолютно одинаково, но в них используются разные служебные символы. В одном случае комментарий начинается с двойного символа «косая черта» (//), а в другом — с символа фунта (#). Ниже приведены примеры обоих стилей:
Конечно, оба стиля однострочных комментариев могут применяться для построения искусственных многострочных комментариев, как показано в следующем листинге:
Многострочные комментарии
В РНР существует возможность построения подробных комментариев, занимающих несколько строк. Такие комментарии оформляются в стиле языка С — их начало и конец обозначаются символами /* и */.
Как видите, многострочные комментарии особенно удобны для вывода относительно длинной сводной информации обо всем сценарии или его части.
Прежде чем переходить к изложению основного материала, занимающего оставшуюся часть книги, я представлю несколько вспомогательных концепций, относящихся к РНР.
Переход в РНР
Механизм лексического анализа должен как-то отличать код РНР от других элементов страницы. Идентификация кода РНР называется «переходом в РНР» (escaping to РНР). Существуют четыре варианта оформления перехода в РНР:
Стандартные теги используются программистами РНР чаще остальных способов, что объясняется наглядностью и удобством этой формы записи:
<?php print "Welcome to the world of PHP!": ?>
У стандартных тегов есть еще одно дополнительное преимущество: за открывающей конструкцией <? следуют символы php, однозначно определяющие тип дальнейшего кода. Это удобно при использовании в одной странице нескольких технологий — таких, как ЖаваСкрипт, серверные включения и РНР. Весь текст, расположенный до закрывающего тега ?>, интерпретируется как код РНР.
Короткие теги
Короткие теги обеспечивают наиболее компактную запись для перехода в РНР:
<? print "Welcome to the world of PHP!"; ?>
По умолчанию короткие теги не используются, их нужно специально активизировать. Это можно сделать двумя способами:
указать ключ -enable-short-tags при компиляции РНР;
включить параметр short_open_tag в файл php.ini.
Теги script
Некоторые текстовые редакторы ошибочно принимают код РНР за код HTML (то есть визуально отображаемый текст), что нарушает работу над web-страницей. Проблема решается использованием тегов script:
<script language="php">
<?php print "Welcome to the world of PHP!"; ?>
</script>
Теги в стиле ASP
Четвертый и последний способ оформления внедренного кода РНР — теги в стиле ASP (Active Server Page). Они похожи на короткие теги, описанные выше, однако вместо вопросительного знака используется знак процента (%):
<%php print "Welcome to the world of PHP!"; %>
У тегов в стиле ASP есть одна особенность, делающая запись более компактной. Во внедренный код РНР не обязательно включать команду print — знак равенства (=), расположенный сразу же после открывающего тега в стиле ASP, приказывает лексическому механизму РНР вывести значение указанной переменной:
<%=$variable %>
Этот удобный стиль позволяет использовать в страницах фрагменты вида
<%
// Присвоить значение переменной $recipe
$recipe = "Lasagna":
%>
Luigi's favorite recipe is <%=$recipe;%>
Этот фрагмент содержит два разных сценария РНР. В первом сценарии переменной $recipe присваивается значение "Lasagna". Позднее, когда потребуется вывести значение $гесiре, специально для этой цели используются теги в стиле ASP. Кстати, такая возможность существует и для коротких тегов (<?...?>).
Внедрение HTML в код РНР
Одной из самых замечательных особенностей HTML является простота использования в сочетании с другими языками — например, HTML и ЖаваСкрипт (см. листинг 1.2).
Листинг 1.2. Вывод кода HTML средствами РНР
<html>
<head>
<title>Basic PHP/HTML integration</title>
</head>
<body>
<?
// Обратите внимание на присутствие тегов HTML в команде print.
print "<h3>PHP/HTML integration is cool.</h3>";
?>
</body>
</html>
Рис. 1.2. Форматирование даты с использованием функции РНР date()
В листинге 1.2 показано, как код HTML интегрируется прямо в команды РНР. В данном примере в код РНР включаются теги заголовка третьего уровня (<h3>...</h3>). В итоговом документе эти теги ничем не отличаются от обычного кода HTML.
В листинге 1.3 продемонстрировано включение динамической информации в web-страницу на примере вывода текущей даты в заголовке окна.
Листинг 1.3. Динамический вывод даты
<title>PHP Recipes | <? print (date("F d, Y")); ?></title>
Простая функция РНР date() форматирует дату одним из нескольких стандартных способов. Отформатированная дата вставляется в заголовок окна.
РНР также позволяет изменять формат конструкций HTML — для этого соответствующая характеристика тега присваивается переменной, вставляемой в файл. В листинге 1.4 эта возможность продемонстрирована на примере присваивания характеристики шрифта (h3) переменной $big_font и ее последующего использования при выводе текста.
Листинг 1.4. Динамические теги HTML
<html>
<head>
<title>PHP Recipes | <? print (date("F d, Y")); ?></title>
</head>
<?
$big_font = "h3";
?>
<body>
<? print "<$big_font>PHP Recipes</$big_font>"; ?>
</body>
</html>
Листинг 1.4 представляет собой разновидность листинга 1.3 — на этот раз тег заголовка (<h3>...</h3>) сначала присваивается переменной, а затем эта переменная используется в команде print. В итоговом документе эти теги ничем не отличаются от обычного кода HTML.
Включение нескольких сценариев РНР
Для обеспечения необходимой гибкости при построении динамических web-приложений можно внедрить в страницу несколько сценариев РНР (листинг 1.5).
Листинг 1.5. Включение нескольких сценариев РНР в один документ
<html>
<head>
<title>
<?
print "Another PHP-enabled page";
Svariable = "Hello World!";
?>
</title></head>
<body>
<? print Svariable; ?>
</body>
</html>
Листинг 1.5 начинается как типичная (пусть несколько упрощенная) страница
HTML. При внедрении нескольких сценариев переменные, значения которых были
присвоены в одном сценарии, могут использоваться в другом сценарии той же
страницы.
Комментарии в коде РНР
Комментарии следует использовать даже в относительно простых и незамысловатых сценариях. В РНР существуют два формата комментариев:
Однострочные комментарии обычно используются для коротких пояснений или примечаний, относящихся к локальному коду.
Многострочные комментарии обычно используются при оформлении алгоритмов на псевдокоде и в более подробных объяснениях.
Оба способа в конечном счете приводят к одинаковому результату и совершенно не влияют на общее быстродействие сценария. Выбор варианта остается за вами.
Однострочные комментарии
При оформлении однострочных комментариев используется два стиля комментирования. Оба стиля работают абсолютно одинаково, но в них используются разные служебные символы. В одном случае комментарий начинается с двойного символа «косая черта» (//), а в другом — с символа фунта (#). Ниже приведены примеры обоих стилей:
<?
// Выбрать цвет роз $rose_color = "red";
# Выбрать цвет фиалок $violet_color = "blue";
print "Roses are $rose_color, violets are $violet_color"
?>
Конечно, оба стиля однострочных комментариев могут применяться для построения искусственных многострочных комментариев, как показано в следующем листинге:
<?
// файл: example. php
// автор: У.Дж.Гилмор
// дата: 24 августа 2000 г.
print "An example with comments";
?>
Многострочные комментарии
В РНР существует возможность построения подробных комментариев, занимающих несколько строк. Такие комментарии оформляются в стиле языка С — их начало и конец обозначаются символами /* и */.
<?
/*
Сценарий: multi_coramment_example.php
Назначение : пример использования многострочных комментариев
Автор: У.Дж.Гилмор
Дата: 14 июня 2000 г.
*/
print "A multiline comment can be found at the top of this script!";
?>
Как видите, многострочные комментарии особенно удобны для вывода относительно длинной сводной информации обо всем сценарии или его части.
|