(Продолжение, начало см. в МК № 38-40 (209-211)). Сегодня мы вплотную займемся тем, к чему так долго стремились в предыдущих статьях. А именно делом :-).
Итак, подведя итоги наших с вами долгих мучений по выбору и настройке программного обеспечения для нашего сервера, мы можем, наконец, начать то, ради чего все это и было затеяно программировать на PHP. У нас все для этого готово, остается только запустить редактор CuteHTML, ярлычок которого автоматически появился на вашем рабочем столе после установки этой полезной софтины, и набрать в нем заветный текст скрипта, сохранив который, получим долгожданный динамический сайт. Но что-то нам мешает. Что же? Ах, да… Мы же не знаем, что писать :-). Но это дело поправимое.
Кстати, насчет редактора. Дополняя предыдущий обзор, не могу не сказать, что в своих блужданиях по просторам Сети я случайно набрел на очень неплохой редактор исходного кода, предназначенный специально для PHP и имеющий все необходимые для работы «фишки»: подсветку синтаксиса, нумерацию строк и даже небольшой файловый менеджер. Называется он Arisesoft Winsyntax, скачать это чудо программерской мысли можно по адресу http://www.winsyntax.com/files/site2/aswsyn20.zip.
Изучение 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-стиль разметки:
Для тех, кто привык работать с ASP. Для этого в файле php.ini необходимо установить опцию asp_tags=On.
4. Script-стиль разметки:
Экзотический способ разметки исходного текста работает, как и стандартный, всегда и везде и предназначен для тех, кто привык работать с JavaScript или VBScript.
Итак, разобрались. Все инструкции языка PHP мы будем помещать между специальными тэгами. Кстати, очень советую использовать первый способ (<?php … ?>) мало ли какие установки PHP поддерживаются реальным сервером, на котором вы впоследствии разместите свой отработанный сайт, а такой способ разметки будет работать всегда. Теперь для того, чтобы всем все стало понятно, мы напишем свой первый PHP-скрипт.
Речь идет о хрестоматийном примере простейшей программе, выводящей приветствие пользователю. Для этого в директории f:\www создадим новый файл с именем hello.phtml, откроем его с помощью текстового редактора и запишем в него следующий текст:
Сохраняем набранный текст, запускаем браузер, в адресную строку которого вводим http://www.mycomp.com.ua/hello.phtml(будет работать если, конечно, вы настроили сервер, как альтернативу сайта МК :-). В противном случае, введите http://127.0.0.1/hello.phtml). Результат не заставит долго ждать (Рис. 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”, и следующая за этим выражением строка вывелась бы с нового абзаца.
На сегодня все. Статья получилась немного скучноватой, слишком много серьезных вещей и слишком мало смайликов :-). Но я обещаю исправиться и в следующих статьях все упростить и сделать намного веселей.