РНР 5 в подлиннике

Страница 102 из 554


208

Часть III. Основы языка РНР

Начало сценария, если бы не был представлен второй пример, может озадачить: раз ве это сценарий9 Откуда HTML теги <htmi> и <body>? Вот тут то и кроется главная особенность (кстати, чрезвычайно удобная) языка РНР: РНР скрипт может вообще не отличаться от обычного HTML документа, как мы это уже заметили ранее.

А помните, как мы раньше в примерах на С писали много одинаковых функций pnntf о для того, чтобы выводить HTML код страницы? На РНР это можно делать естественным образом, без всяких операторов. Иными словами, все, что расположе но в нашем примере до начала РНР кода, отображается непосредственно, как будто при помощи нескольких вызовов pnntf о в С.

Идем дальше. Вы, наверное, догадались, что сам код сценария начинается после от крывающего тега <? и заканчивается закрывающим ?>. Итак, между этими двумя тега ми текст интерпретируется как программа, и в HTML документ не попадает. Если же программе нужно что то вывести, она должна воспользоваться оператором echo (это не функция, а конструкция языка: ведь, в конце концов, если это функция, то где же скобки?). Мы подробно рассмотрим ее работу в дальнейшем. Итак, РНР устроен так, что любой текст, который расположен вне программных блоков, ограниченных <? и ?>, выводится в браузер непосредственно, т е воспринимается, как вызов оператора echo (последняя аналогия очень точна, и мы остановимся на ней чуть позже).

Нетрудно догадаться, что часть строки после // является комментарием и на про грамму никак не влияет. Однострочные комментарии также можно предварять сим волом # вместо //, как мы можем это увидеть в примере. Комментарии еще бывают и такие:

/*

это комментарий

...и еще одна строка

*/

То есть, комментарии могут, как и в С, быть однострочными и многострочными. Однако в некоторых реализациях РНР многострочные комментарии почему то всту пают в конфликт с "русскими буквами, которые могут находиться между ними. А именно, появляются бессмысленные сообщения о синтаксических ошибках, при чем совершенно не в том месте Почему так происходит, неясно: видимо, ошибка в РНР. Насчет комментариев и контроля ошибок мы еще поговорим, а пока вот вам совет: никогда не пользуйтесь многострочными комментариями в РНР, если хотите жить долго и счастливо (тем более, что не допускаются вложенные многострочные комментарии).

А пока давайте лучше посмотрим, что происходит дальше. Вот строка: $dat date("d.m у");

Делает она следующее: переменной с именем $dat (заметьте, что абсолютно все пере менные в РНР должны начинаться со знака $, потому что 'так проще для интерпре тации) присваивается значение, которое вернула функция date о. Итак, мы видим, что в РНР, во первых, нет необходимости явно описывать переменные (как это де лается, например, в программах на Pascal или С), а во вторых, нигде не указывается их тип (строка, число и т д). Интерпретатор сам решает, что, где и какого типа. А насчет функции date ()... Можно заметить, что у нее задается один параметр, ко

Гпава 8. Характеристика языка РНР

209

торый определяет формат результата Например, в нашем случае это будет строка вида '11 07 04"

В конце каждого оператора должна стоять точка с запятой (;), как в С. Заметьте именно как в С, а не как в Pascal. Иными словами, вы обязаны ставить точку с за пятой перед else в конструкции if else, но не должны после заголовка функции.

На следующей строке мы опять видим комментарии, а дальше еще один опера тор, похожий на ранее описанный. Он присваивает переменной $tm текущее время в формате 'часы-минуты-секунды", опять же при помощи вызова date о. Все воз можности этой полезной функции будут подробно описаны в части IV.

Далее следуют операторы echo, выводящие текстовые строки, а также дату и время. Рассмотрим один из них-

echo "Текущая дата: $dat года<Ьг>\п";

Заметьте: то, что любая переменная должна начинаться с символа $, позволяет интерпретатору вставить ее прямо в строку символов на место $dat (конечно, в любую строку, а не только в параметры echo). Разумеется, можно было бы написать и так (поскольку конструкция echo не ограничена по числу параметров):

echo "Текущая дата: ",$dat," года<Ьг>\п";

или даже так:

echo "Текущая дата: ".$dat." года<Ьг>\п";

т. к для слияния строк используется операция '.' (к этому придется пока привык

Кстати, на вопрос, почему для конкатенации строк применяется точка (.), а не, скажем, плюс (+), довольно легко ответить примером:

$а "100"; $Ь "200";

echo $а + $Ь; // выведет "300" echo $а . $Ь; // выведет "100200"

Итак, мы видим, что плюс используется именно как числовой оператор, а точка как строковой. Все нюансы применения операторов мы рассмотрим в следующей

Еще один пример ' внедрения" переменных непосредственно в строку.

$path "с:/windows"; $name "win"; $ext "com"; $fullPath "$path/$name.$ext";

Последнее выглядит явно изящнее, чем:

$path "с:/windows"; $name "win"; $ext "com"; $fullPath $path . "/" . $name . "." . $ext;

В терминах язь ка Perl можно сказать что переменнь е в строках заключеннь х в кавычки интерполируются т е. расширяются Существует и другой способ представления строк в РНР — это строки в апострофах и в них переменнь е не интерполируются

нуть).

главе.




  Hostland.Ru

 «Бесплатный хостинг Hostland.Su» © 2006