(Продолжение, начало см. в МК № 38-40 (209-211)). Сегодня мы вплотную займемся тем, к чему так долго стремились в предыдущих статьях. А именно — делом :-).

Итак, подведя итоги наших с вами долгих мучений по выбору и настройке программного обеспечения для нашего сервера, мы можем, наконец, начать то, ради чего все это и было затеяно — программировать на PHP. У нас все для этого готово, остается только запустить редактор CuteHTML, ярлычок которого автоматически появился на вашем рабочем столе после установки этой полезной софтины, и набрать в нем заветный текст скрипта, сохранив который, получим долгожданный динамический сайт. Но что-то нам мешает. Что же? Ах, да… Мы же не знаем, что писать :-). Но это дело поправимое.

Кстати, насчет редактора. Дополняя предыдущий обзор, не могу не сказать, что в своих блужданиях по просторам Сети я случайно набрел на очень неплохой редактор исходного кода, предназначенный специально для PHP и имеющий все необходимые для работы «фишки»: подсветку синтаксиса, нумерацию строк и даже небольшой файловый менеджер. Называется он Arisesoft Winsyntax, скачать это чудо программерской мысли можно по адресу .

Изучение PHP, как и любого другого языка программирования, мы начнем с описания структуры программы. Говоря простым языком, структура программы — это то, что мы видим в редакторе исходного кода. PHP имеет несколько специфичную структуру исходного текста, которая, однако, обладает рядом несомненных достоинств.

Во-первых, поскольку PHP — язык интерпретируемый, PHP-скрипт сохраняется в обыкновенный текстовый файл с любым допустимым именем и расширением .php и .phtml (или такими, какие вы настроили при установке PHP) и обрабатывается не сервером или браузером, а специальной программой-интерпретатором. Фиксированные расширения позволяют серверу определить, что перед ним находится именно PHP, и передать управление интерпретатору, который выполнит все инструкции, заключенные между специальными тэгами разметки (кроме комментариев), и при отсутствии ошибок выдаст результат в виде динамически сгенерированной страницы. Файлы с другими расширениями будут обрабатываться в зависимости от установок сервера, встроенные же в них PHP-инструкции не будут интерпретироваться вовсе, а будут просто выводиться в текст страницы.

Во-вторых, в тело PHP-скрипта можно встраивать обыкновенные HTML-тэги и тем самым в качестве результата выводить HTML-страницу, которая может быть очень гибко отформатирована в зависимости от ваших требований. Это очень напоминает майскрософтовскую технологию ASP (подробнее о ней читайте в цикле статей Алексея СИТНИКОВА «Уроки ASP-технологии», МК №8, 11-13, 15, 17-18, 20, 22, 27 (180, 183-184, 186, 188-189, 191, 193)). Вообще, PHP — конгломерат всяческих CGI-языков, сочетающий характерные их возможности и особенности.

И наконец, сам синтаксис языка тоже недалеко ушел от ASP. В PHP поддерживается четыре способа разметки, то есть указания интерпретатору начала и окончания блока PHP-инструкций, которые необходимо выполнить. Каждый из этих способов может быть совмещен с обыкновенным HTML-кодом (об этом позже), причем в браузере не будет виден исходный код скрипта — только результат его выполнения.

1. Стандартный способ разметки:

.

Для всех. Этот способ используется по умолчанию и работает всегда и везде.

2. Сокращенный способ:

.

Для тех, кому лень много писать :-). Правда, для этого в файле php.ini (который находится или в папке, в которую установлен PHP, или в вашей папке Windows) необходимо предварительно установить опцию short_open_tag=On.

3. ASP-стиль разметки:

<% PHP-инструкции %>.

Для тех, кто привык работать с ASP. Для этого в файле php.ini необходимо установить опцию asp_tags=On.

4. Script-стиль разметки:

.

Экзотический способ разметки исходного текста — работает, как и стандартный, всегда и везде и предназначен для тех, кто привык работать с JavaScript или VBScript.

Итак, разобрались. Все инструкции языка PHP мы будем помещать между специальными тэгами. Кстати, очень советую использовать первый способ () — мало ли какие установки PHP поддерживаются реальным сервером, на котором вы впоследствии разместите свой отработанный сайт, а такой способ разметки будет работать всегда. Теперь для того, чтобы всем все стало понятно, мы напишем свой первый PHP-скрипт.

Речь идет о хрестоматийном примере — простейшей программе, выводящей приветствие пользователю. Для этого в директории f:\www создадим новый файл с именем hello.phtml, откроем его с помощью текстового редактора и запишем в него следующий текст:

Сохраняем набранный текст, запускаем браузер, в адресную строку которого вводим (будет работать — если, конечно, вы настроили сервер, как альтернативу сайта МК :-). В противном случае, введите ). Результат не Рис. 1заставит долго ждать (Рис. 1).

Теперь осталось разобрать все по строкам.

Строки 1 и 3 обозначают соответственно начало и конец блока. В строку 2 мы записали собственно PHP-инструкцию, которая и выводит наше сверхоригинальное приветствие :-). Вообще, семантика (т.е. написание и произношение) ключевых слов языка PHP соответствует их значению в английском языке, что придает PHP, как и любому другому языку программирования высокого уровня, удобство чтения и запоминания. Также и в нашем примере —echo обозначает «отобразить, отразить», что и происходит при выполнении скрипта.

И еще немного о полезных особенностях PHP. Наш первый скрипт можно было написать немного иначе:

При этом полученный в качестве результата динамический HTML-код не будет содержать исходного текста нашего скрипта и будет выглядеть примерно так:

На самом деле, несмотря на кажущуюся простоту скрипта, мы забежали немного вперед, но я это сделал для того, чтобы вам было интересно идти дальше. Изучение любого языка всегда начинается с изучения алфавита. Так же и в языках программирования — мы сразу должны определиться, какие символы и где можно использовать, составляя программы на PHP.

В языке PHP можно использовать все символы, которые можно ввести с клавиатуры. При этом символы русского алфавита можно использовать только в кавычках, в качестве значения выражений, которые не несут смысловой нагрузки на интерпретатор. В первом скрипте вместо Hello, my dear user! мы вполне могли написать Привет, мой дорогой пользователь!.

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

С возможностью использования тех или иных алфавитно-цифровых символов латинского алфавита и других специальных символов мы познакомимся позже. А пока немного модернизируем наш первый скрипт, применив в нем новое понятие —переменную.

Переменная — это поименованная область памяти, имеющая определенное значение и тип и доступная в своей области определения по определенному идентификатору, называемому именем переменной (ух, как завернул! :-)). Во втором скрипте именем переменной является $message, она имеет тип string, а ее значением является строка Hello, my dear user! В PHP имена переменных всегда начинаются со знака доллара $, в любом другом случае имя переменной интерпретируется как ключевое слово, что неизбежно вызовет ошибку в интерпретации скрипта. После символа $ всегда должен идти алфавитный (не цифровой!) символ или знак подчеркивания.

PHP версии 4 и выше поддерживает работу с восемью типами данных: booleans (в качестве значения может принимать true или false), integers (в качестве значений — только целые числа), floating point numbers (числа с плавающей точкой), strings (строки), \(массивы данных любого типа), objects (объекты), resources (ресурсы), NULL (переменная, не содержащая никакого значения). Все перечисленные типы мы будем подробно рассматривать в следующих публикациях. Сейчас они нам не нужны :-).

При работе со значениями переменных мы неизбежно столкнемся с арифметическими операциями — присвоения, вычитания, умножения, деления и т.д. PHP в этом плане очень демократичен и не забивает головы программистам ненужными нововведениями. Здесь все, как и в любом другом языке программирования — операция присвоения обозначается знаком =, вычитания — знаком –, умножения — звездочкой *, деления — знаком /. Естественно, в PHP мы можем работать и с логическими операциями, но об этом мы поговорим в следующих статьях.

Огромным, на мой взгляд, преимуществом языка PHP является то, что переменные в теле скрипта совершенно необязательно заранее объявлять и присваивать им тот или иной тип — все это делается динамически. Это значит, что мы можем в первой строке скрипта присвоить переменной $var значение Variable (тип строка), а во второй —112 (целое число), и интерпретатор при этом не задохнется! В принципе, это очень удобно, но я все же советовал бы вам следить за переменными, так как такая гибкость кода может оказаться на руку хакерам и прочим нехорошим личностям. Но о вопросах безопасности нам говорить пока рано — если кто-то очень хочет взломать наш первый скрипт — пусть ломает на здоровье! Мы ведь гуманисты :-).

Несмотря на подобную гибкость, PHP позволяет жестко установить тип той или иной переменной. Для этого служит функция settype(), которая в качестве параметров принимает имя переменной и тип, который ей (переменной) нужно сопоставить. Например, settype($message, “string”) жестко устанавливает нашей переменной тип строка. Это, правда, не значит, что мы не сможем в дальнейшем присвоить ей целочисленное значение :-), но формальности будут соблюдены. В качестве второго параметра можно установить “boolean”, “integer”, “double” (для PHP 4.2.0 и выше —“float”), “string”, “array”, “object” или “null”.

Еще одна полезная конструкция PHP (как, впрочем, и любого другого языка программирования) — это комментарии. Без комментариев любой, даже самый профессиональный программер запутается в десятках килобайт собственного кода :-). Комментарий — это специальная синтаксическая конструкция, позволяющая разработчику размещать ту или иную служебную информацию непосредственно в теле скрипта (с помощью комментария можно, например, исключить ту или иную инструкцию из потока выполняемых операторов или в исходном коде указать собственные авторские права :-)). Комментарии не несут смысловой нагрузки и при обработке программы просто пропускаются. В РНР комментарии обозначаются следующим образом:

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

Здесь мы комментарием разорвали функцию echo. При этом интерпретатор не выдаст сообщение об ошибке — функция echo будет выполнена, но без параметров. И мы увидим чистый лист :-)

Еще одной особенностью движка PHP является очень полезная возможность строкового типа данных — подстановка переменных непосредственно в тело строки, заключенной в двойные кавычки. При этом строка, заключенная в одинарные кавычки, выводится без обработки. В нашем скрипте мы могли написать:

Результат выполнения этого скрипта изображен на Рис. 2.

Эта особенность позволяет гибко использовать возможности текстового форматирования, используя так называемые управляющие последовательности (escaped characters). В их число входит, например, символ перехода на новую строку \n или символ горизонтальной табуляции \t. Мы могли бы написать echo “Здравствуй, дорогой $name!\n”, и следующая за этим выражением строка Рис. 2вывелась бы с нового абзаца.

На сегодня все. Статья получилась немного скучноватой, слишком много серьезных вещей и слишком мало смайликов :-). Но я обещаю исправиться и в следующих статьях все упростить и сделать намного веселей.

(Продолжение следует)