РНР 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 можно сказать что переменнь е в строках заключеннь х в кавычки интерполируются т е. расширяются Существует и другой способ представления строк в РНР — это строки в апострофах и в них переменнь е не интерполируются нуть). главе.
|
| |
|
В начало ←предыдущая следующая→ ... 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 ... | ||