Анимация
JavaScript
|
Главная Библионтека ?> </body></html> Я убежден, что синтаксис любого языка программирования гораздо легче "почувствовать" на примерах, нежели используя какие-то диаграммы и схемы. Я буду придерживаться этого принципа на протяжении всей книги. Что ж, приступим к разбору программы. Начало сценария, если бы не был уже затронут второй пример, может озадачить: разве это сценарий? Откуда HTML-тэги <html> и <body>? Вот тут-то и кроется главная особенность (кстати, чрезвгчайно удобная) языка PHP: PHP-скрипт может вообще не отличаться от обгчного HTML-документа, как мы это уже заметили ранее. А помните, как мы раньше в примерах на Си писали кучу одинаковых printfов для того, чтобы выводить HTML-код страницы? На PHP это можно делать естественным образом, без всяких операторов. Иными словами, все, что расположено в нашем примере до начала PHP-кода, отображается непосредственно, как будто при помощи нескольких вызовов printf() в Си. Идем дальше. Вы, наверное, догадались, что сам код сценария начинается после открывающего тэга <? и заканчивается закрывающим ?>. Итак, между этими двумя тэгами текст интерпретируется как программа, и в HTML-документ не попадает. Если же программе нужно что-то вывести, она должна воспользоваться оператором echo (это не функция, а конструкция языка: ведь, в конце концов, если это функция, то где же скобки?). Мы подробно рассмотрим ее работу в дальнейшем. Итак, PHP устроен так, что любой текст, который расположен вне программных блоков, ограниченных <? и ?>, вхводится в браузер непосредственно, т. е. воспринимается, как вызов оператора echo (последняя аналогия очень точна, и мы остановимся на ней чуть позже). Нетрудно догадаться, что часть строки после является комментарием и на программу никак не влияет. Однострочные комментарии также можно предварять и символом # вместо , как мы можем это увидеть в примере. Комментарии еще бывают и такие: это комментарий ...и еще одна строка То есть, комментарии могут, как и в Си, быть однострочными и многострочными. Однако в некоторых реализациях PHP многострочные комментарии почему-то вступают в конфликт с "русскими" буквами, которые могут находиться между ними. А именно, появляются бессмысленные сообщения о синтаксических ошибках, причем совершенно не в том месте. Почему так происходит, неясно: видимо, ошибка в PHP. Насчет комментариев и контроля ошибок мы еще поговорим, а пока вот вам совет: никогда не пользуйтесь многострочными комментариями в PHP, если хотите жить долго и счастливо (тем более, что не допускаются вложенные многострочные комментарии). А пока давайте лучше посмотрим, что происходит дальше. Вот строка: $dat=date("d.m y"); Делает она следующее: переменной с именем $dat (заметьте, что абсолютно все переменные в PHP должны начинаться со знака $ , потому что "так проще для интерпретации") присваивается значение, которое вернула функция date() . Итак, мы видим, что в PHP, во-первых, нет необходимости явно описывать переменные (как это делается, например, в Паскале или Си), а во-вторых, нигде не указывается их тип (про типы мы еще поговорим чуть позже). Интерпретатор сам решает, что, где и какого типа. А насчет функции date()... Можно заметить, что у нее задается один параметр, который определяет формат результата. Например, в нашем случае это будет строка вида "11.12 01". В конце каждого оператора должна стоять точка с запятой, как в Си. Заметьте - именно как в Си, а не как в Паскале. Иными словами, вы обязаны ставить точку с запятой перед else в конструкции if-else, но не должны после заголовка функции. На следующей строке мы опять видим комментарии, а дальше - еще один оператор, похожий на ранее описанный. Он присваивает переменной $tm текущее время в формате "часы:минуты:секунды", опять же при помощи вызова date() . Все возможности этой полезной функции будут подробно описаны в четвертой части книги. Далее следуют операторы echo, выводящие текстовые строки и нашу дату и время. Рассмотрим один из них: echo "Текущая дата: $dat года<br>\n"; Заметьте: то, что любая переменная должна начинаться с символа $ , позволяет интерпретатору вставить ее прямо в строку символов на место $dat (конечно, в любую строку, а не только в параметры echo). Разумеется, можно было бы написать и так (поскольку конструкция echo не ограничена по числу параметров): echo "Текущая дата: ",$dat," года<br>\n"; или даже так: echo "Текущая дата: ".$dat." года<br>\n"; так как для слияния строк используется операция ". " (к этому придется пока привыкнуть). Кстати говоря, на вопрос, почему для конкатенации строк применяется точка а не, скажем, плюс "+", довольно легко ответить примером: $a="100"; $b="200"; echo $a+$b; в1ведет "300" echo $a.$b; выведет "100200" ( Замечание В терминах языка Perl можно сказать, что переменные в строках, заключенных в кавычки, интерполируются, т. е. расширяются. Существует и другой способ представления строк в PHP - это строки в апострофах, и в них переменные не интерполируются. Ну вот, мы почти подобрались к сердцу нашего сценария - "уникальному" алгоритму поиска квадратов и кубов первых 5 натуральных чисел. Выглядит он так: for($i=1; $i<=5; { echo "<li>$i в квадрате = ".($i*$i); echo ", $i в кубе = ".($i*$i*$i)."\n"; В первой строке находится определение цикла for (счетчик $i, которому присваивается начальное значение 1, инкрементируется на единицу на каждом шаге, пока не достигнет пяти). Затем следует блок, выполняющий вывод одной пары "квадрат-куб". Я намеренно сделал вывод в две строки, а не в одну, чтобы показать, что в PHP применяются те же самые правила группировки операторов, что и в Си. А именно: несколько операторов можно сделать одним сложным оператором, заключив их в фигурные скобки, как это сделано выше. Наконец, после всего этого расположен закрывающий тэг PHP ?>, а дальше - опять обгчные HTML-тэги, завершающие нашу страничку. Уф! Вот какой код получился в результате работы нашего сценария (листинг 6.2): ! Листинг 6.2. Результат работы сценария <html><body> <h1>Здравствуйте!</h1> Текущая дата: 29.01 01 года<br> Итак, мы видим, что плюс используется именно как числовой оператор, а точка - как строковой. Все нюансы применения операторов мы рассмотрим в следующей главе. Еще один пример "внедрения" переменных непосредственно в строку: $path="c:/windows"; $name="win"; $ext="com"; FullPath="$path\$name.$ext"; Последнее выглядит явно изящнее, чем: $path="c:/windows"; $name="win"; $ext="com"; $FullPath=$path."\".$name.".".$ext; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 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 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 |