2.4 Характеристика языка PHP

Язык программирования РНР предназначен, главным образом, для построения веб-сайтов. Вместо того чтобы выполнять программу, написанную на РНР, в однопользовательском режиме на настольном компьютере, ее обычно запускают на веб-сервере, чтобы сделать доступной для многих людей, пользующихся веб-браузерами на своих компьютерах.

Пример PHP-программы
В предыдущей главе мы уже рассматривали традиционную программу “Hello, world!”. В полном варианте она выглядит следующим образом:
<?php
echo “Hello, world!”;
?>
Однако PHP-сценарий по своей природе несколько отличается от обычных CGI-сценариев, которые мы рассматривали в части I. Приведенную выше программу можно записать альтернативным способом. Следующий пример поставит все точки над “i”. Для тех, кто еще не сталкивался с синтаксисом PHP, он будет особенно интересен. Вот как выглядит второй пример программы на PHP:
<body>
Hello, world!
</body>
Да-да, вы не ошиблись — тут действительно вообще нет никаких операторов PHP, и содержимое файла с “программой” состоит целиком из статического текста. Что же происходит? Получается, что обычный HTML-текст также правильно обрабатывается PHP? Да, это так. Однако рассмотрим чуть более сложный пример:

<!DOCTYPE html>
<html lang=’ru’>
<head>
<title>Простейший PHP-сценарий</title>
<meta charset=’utf-8′>
</head>
<body>
<h1>Здравствуйте!</h1>
<p>
<?php
// Вычисляем текущую дату в формате “день.месяц год”
$dat = date(“d.m y”);
// Вычисляем текущее время
$tm = date(“h:i:s”);
# Выводим их
echo “Текущая дата: $dat года<br />\n”;
echo “Текущее время: $tm<br />\n”;
# Выводим цифры
echo “А вот квадраты и кубы первых 5 натуральных чисел:<br />\n”;
echo “<ul>\n”;
for ($i = 1; $i <= 5; $i++) {
echo “<li>$i в квадрате = ” . ($i * $i);
echo “, $i в кубе = ” . ($i * $i * $i) . “</li>\n”;
}
?>
</ul>
</p>
</body></html>

Начало сценария, если бы не был представлен второй пример, может озадачить: разве это сценарий? Откуда HTML-теги <html> и <body>? Вот тут-то и кроется главная особенность (кстати, чрезвычайно удобная) языка PHP: PHP-скрипт может вообще не отличаться от обычного HTML-документа, как мы это уже заметили ранее.
Помните, как мы раньше в примерах на C писали много одинаковых функций printf() для того, чтобы выводить HTML-код страницы? На PHP это можно делать естественным образом, без всяких операторов. Иными словами, все, что расположено в нашем примере до начала PHP-кода, отображается непосредственно, как будто при помощи нескольких вызовов printf() в C. Идем дальше. Вы, наверное, догадались, что сам код сценария начинается после открывающего тега <?php и заканчивается закрывающим ?>. Итак, между этими двумя тегами
текст интерпретируется как программа и в HTML-документ не попадает. Если же программе нужно что-то вывести, она должна воспользоваться оператором echo. (Это не функция, а конструкция языка: ведь, в конце концов, если это функция, то где же скобки?) Мы подробно рассмотрим ее работу в дальнейшем. Получается, PHP устроен так, что любой текст, который расположен вне программных блоков, ограниченных <?php и
?>, выводится в браузер непосредственно, т. е. воспринимается как вызов оператора echo (последняя аналогия очень точна, и мы остановимся на ней чуть позже).
Нетрудно догадаться, что часть строки после // является комментарием и на программу никак не влияет. Однострочные комментарии также можно предварять символом # вместо //, как мы можем это увидеть в примере. Комментарии еще бывают и такие:
/*
это комментарий
…и еще одна строка
*/
То есть, комментарии могут, как и в C, быть однострочными и многострочными. Давайте посмотрим, что происходит дальше. Вот строка:
$dat = date(“d.m y”);
Делает она следующее: переменной с именем $dat присваивается значение, которое вернула функция date(). Заметьте, что абсолютно все переменные в PHP должны начинаться со знака $, потому что “так проще для интерпретации”. Итак, мы видим, что в PHP, во-первых, нет необходимости явно описывать переменные (как это делается, например, в программах на Pascal или C), а во-вторых, нигде не указывается их тип (строка, число и т. д.). Интерпретатор сам решает, что, где и какого типа. Насчет функции date()… Можно заметить, что у нее задается один параметр, который определяет формат результата. Например, в нашем случае это будет строка вида “11.07 04”. В конце каждого оператора должна стоять точка с запятой (;), как в C. Заметьте — именно как в C, а не как в Pascal. Иными словами, вы обязаны ставить точку с запятой перед else в конструкции if-else, но не должны после заголовка функции.
На следующей строке мы опять видим комментарии, а дальше — еще один оператор, похожий на ранее описанный. Он присваивает переменной $tm текущее время в формате “часы:минуты:секунды”, опять же при помощи вызова date(). Все возможности этой полезной функции будут подробно описаны в части III.
Далее следуют операторы echo, выводящие текстовые строки, а также дату и время. Рассмотрим один из них:
echo “<p>Текущая дата: $dat года</p>\n”;
Заметьте: то, что любая переменная должна начинаться с символа $, позволяет интерпретатору вставить ее прямо в строку символов на место $dat (конечно, в любую строку, а не только в параметры echo). Разумеется, можно было бы написать и так (поскольку конструкция echo не ограничена по числу параметров):
echo “<p>Текущая дата: “, $dat, ” года</p>\n”;
или даже так:
echo “<p>Текущая дата: ” . $dat . ” года</p>\n”;
т. к. для слияния строк используется операция . (к этому придется пока привыкнуть).
Кстати, на вопрос, почему для конкатенации строк применяется точка (.), а не, скажем, плюс (+), довольно легко ответить примером:
$a = “100”;
$b = “200”;
echo $a + $b; // выведет “300”
echo $a . $b; // выведет “100200”
Итак, мы видим, что плюс используется именно как числовой оператор, а точка — как строковой. Все нюансы применения операторов мы рассмотрим в следующей главе.
Еще один пример “внедрения” переменных непосредственно в строку:
$path = “c:/windows”; $name = “win”; $ext = “com”;
$fullPath = “$path/$name.$ext”;
Последнее выглядит явно изящнее, чем:
$path = “c:/windows”; $name = “win”; $ext = “com”;
$fullPath = $path . “/” . $name . “.” . $ext;
Ну вот, мы почти подобрались к сердцу нашего сценария — “уникальному” алгоритму поиска квадратов и кубов первых 5-ти натуральных чисел. Выглядит он так:
for ($i = 1; $i <= 5; $i++) {
echo “<li>$i в квадрате = ” . ($i * $i);
echo “, $i в кубе = ” . ($i * $i * $i) . “</li>\n”;
}
В первой строке находится определение цикла for (счетчик $i, которому присваивается начальное значение 1, инкрементируется на единицу на каждом шаге, пока не достигнет шести). Затем следует блок, выполняющий вывод одной пары “квадрат-куб”. Мы намеренно сделали вывод в две строки, а не в одну, чтобы показать, что в PHP применяются те же самые правила группировки операторов, что и в C. А именно: несколько операторов можно сделать одним сложным оператором, заключив их в фигурные скобки, как это сделано выше.
Наконец, после всего этого расположен закрывающий тег PHP ?>, а дальше — опять обычные HTML-теги, завершающие нашу страничку.
Вот какой HTML-код получился в результате работы нашего сценария:
<!DOCTYPE html>
<html lang=’ru’>
<head>
<title>Простейший PHP-сценарий</title>
<meta charset=’utf-8′>
</head>
<body>
<h1>Здравствуйте!</h1>
<p>Текущая дата: 18.10 15 года</p>
<p>Текущее время: 10:23:18</p>
<p>А вот квадраты и кубы первых 5 натуральных чисел:</p>
<ul>
<li>1 в квадрате = 1, 1 в кубе = 1</li>
<li>2 в квадрате = 4, 2 в кубе = 8</li>
<li>3 в квадрате = 9, 3 в кубе = 27</li>
<li>4 в квадрате = 16, 4 в кубе = 64</li>
<li>5 в квадрате = 25, 5 в кубе = 125</li>
</ul>
</body></html>
Как видите, выходные данные сценария скомбинировались с текстом, расположенным вне скобок <?php и ?>. В этом-то и заключена основная сила PHP: в легком встраивании кода в тело документа.

Использование PHP в Web
Пока мы с вами теоретически разобрали работу сценария на PHP. Давайте же наконец займемся практикой. Сначала поговорим вот о чем. Итак, PHP — язык, который позволяет встраивать в код программы “куски” HTML-
кода. Мы можем использовать его для написания сценариев и избавиться от множества неудобных операторов вывода текста. Не так ли? Посмотрим. Вот другое утверждение. PHP — язык (надстройка над HTML), который
позволяет встраивать программный код в HTML-документы. Мы можем привлекать его для формирования HTML-документов и избавиться от множества вызовов внешних сценариев.
Вы озадачены — какое же из утверждений (в чем-то противоречивых, кстати) верно? Это хорошо: значит, мы достигли цели. Мы с вами только что избежали одной из самых популярных ошибок начинающих программировать на PHP людей — считать единственно верным только первое или только второе утверждение. В действительности PHP представляет собой язык, в котором в одних ситуациях следует придерживаться одного, а в остальных — другого соглашения.

Ну что, стало понятнее? Давайте пока будем рассматривать все наши примеры так, как будто они подходят под второе утверждение (хотя в последнем примере — положа руку на сердце — больше программного кода, чем HTML-тегов). Итак, программа в листинге 5.1 представляет собой HTML-страницу с “вкрапленным” кодом на PHP. А раз так, то назовем ее, например, sq.php и расположим в каталоге для документов на Web-сервере. Теперь с точки зрения Web-пользователя она — просто страница.

Вот мы и получили начальное представление о том, как выглядит типичный скрипт на PHP. ))


Залишити відповідь