Pers.narod.ru. PHP. PHP - кратчайший обзор |
Сразу скажу, что работать с PHP имеет смысл, если уже знаете разметку HTML и язык программирования Си (Си++). Насчет HTML всё понятно, а Си нужен, чтоб быстро привыкнуть к синтаксису и уменьшить риск окончательно испортить себе стиль программирования, чему PHP немало способствует.
Отношение программиста к PHP проходит обычно 3 стадии:
1. На этом языке я могу написать что угодно!
2. На этом языке можно сделать что-то хорошее...
3. На этом языке лучше вообще ничего не делать.
Как правило, "пыхарей", т.е., профессиональных программеров на PHP, легко разделить на 2 категории: одни умные, а другие пишут свою супер-CMS (движок) "на все случаи жизни" :)
Отчасти эта заметка была написана мной в давние времена как памятка. Про установку и настройку PHP под Windows XP и ей подобные, а также про подключение к базе данных написано здесь.
<? Код PHP ?> - стиль разработчиков (работает, если в файле php.ini установлена директива short_open_tag = On)
<?php Код PHP ?> - стиль XML
<script language="php"> Код PHP</script> - стиль скриптов
<% Код PHP %> - стиль ASP (работает, если установлена директива asp_tags = On)
Чаще всего, конечно, не "скрипт вставляется в HTML", а файл скрипта с расширением PHP формирует документ HTML, отдаваемый браузеру. Операторы разделяются точкой с запятой; лишние разделители игнорируются. Комментарии - в стилях Си /* : */ и // и Perl (# - до конца строки)
Все имена переменных начинаются с $ Переменные из формы HTML получаются непосредственно указанием имени (независимо от метода передачи данных из формы):
файл get1.html
<html> <form action="get1.php"> <p>ФИО: <input type=text name=fio> <input type=submit value="OK"> </form></html>
файл get1.php
<? Echo "<html>$fio</html>"; ?>
Чтобы этот способ работал, должна быть установлена переменная register_globals = On в файле php.ini (опасно и устарело).
Второй способ - получение данных формы из массивов $HTTP_POST_VARS (метод передачи POST) и $HTTP_GET_VARS (метод GET, принятый по умолчанию):
файл get2.php
<? $fio=$HTTP_GET_VARS["fio"]; Echo "<html>$fio</html>"; ?>
Третий способ - суперглобальные массивы $_GET и $_POST, описанные здесь. Рекомендуется делать именно так.
Грубо говоря, в PHP различают переменные и строки.
Строки, заключенные в двойные кавычки, оцениваются, в частности, происходит подстановка имен переменых и тегов HTML:
echo "<p>Введена фамилия: $fio";
Строки в апострофах не оцениваются. Вместо подстановки переменных в строки можно использовать конкатенацию, то есть, сцепление строк (символ точки):
echo '<p>Введена фамилия: '.$fio;
Имена переменных чувствительны к регистру, не могут начинаться с цифры и содержать разделителей внутри. Тип переменной определяется при инициализации её значением. PHP различает типы integer, double, string, array и object Типы изменяются "на лету" при присваивании значения другого типа.
Поддерживается тип "переменная переменных", позволяющий использовать значение одной переменной в качестве имени другой:
файл get3.html
<html> <form action="get3.php"> <p>В какую переменную записать значение? <select size=1 name=list> <option selected value="var1">var1</option> <option value="var2">var2</option> <option value="var3">var3</option> </select> <input type=submit value="OK"> </form></html>
файл get3.php
<html> <? $var1=$var2=$var3=0; $$list=1; //Обошлись без проверки, что выбрано из списка echo "<p>var1=$var1, var2=$var2, var3=$var3"; ?> </html>
То есть, $$Имя_переменной означает "взять значение переменной, имя которой получено из переменной $Имя_переменной".
Константы в сценарии можно объявлять оператором вида
define ("NALOG",13);
Имена констант, как и в Си, принято (но не обязательно) писать ПРОПИСНЫМИ.
Собственные константы и настройки PHP, которых довольно много, легко посмотреть, выполнив функцию phpinfo():
файл phpinfo.php:
<? phpinfo(); ?>
Арифметические операции и присваивание - в стиле Си (*,/,%,+,-), как и в Си, разрешены унарные операции, префиксный и суффиксный инкремент и декремент, присваивание цепочкой: $a=$b=0; и на лету: $b=6+($a=5);
Результаты операций сравнения интерпретируются и как true-false, и как 1-0.
Кроме обычного сравнения ==, есть сравнение идентичности ===, возвращающее true, если операнды равны и имеют один тип. Не равно пишется в любом из видов != и <>
Логические операции взяты из Си (!, &&, ||), можно так же писать and, or, но их приоритет ниже (см. таблицу)
Поразрядные операции разрешены в стиле Си (&, |, ~, ^, <<, >>)
Разрешена операция списка (запятая).
Разрешены операции new и -> для создания экземпляра класса и доступа к членам класса.
Разрешена тернарная операция условие ? значение-если-истина : значение-если-ложь
Унарная операция подавления ошибки @ может использоваться перед любым выражением, имеющим значение. Например, $x=0; $a=1; @($a/=$x); echo "$a"; или $a=@(1/0); не приведет к сообщению о делении на ноль. При таком подавлении ошибок для собственной обработки можно использовать сообщение из переменной PHP $php_errormsg, а в файле php.ini должно быть track_errors = On (по умолчанию Off)
Унарная операция выполнения `командная строка` заставляет PHP выполнить все, заключенное между обратными апострофами, как команду, вводимую в командной строке текущего сервера. Вывод команды будет значением выражения.
файл get4.php:
<html> <? $dir=`dir \*.*`; echo "<pre>$dir</pre>"; ?> </html>
Ассоциативность |
Операции |
cлева направо |
, |
cлева направо |
or |
cлева направо |
xor |
cлева направо |
and |
cлева направо |
|
cлева направо |
= += -= *= /= .= %= &= |= ^= ~= <<= >>= |
cлева направо |
|| |
cлева направо |
&& |
cлева направо |
| |
cлева направо |
^ |
cлева направо |
& |
не определена |
== != === |
не определена |
< <= > >= |
cлева направо |
<< >> |
cлева направо |
+ - . |
cлева направо |
* / % |
справа налево |
! ~ ++ -- (int) (double) (string) (array) (object) @ |
справа налево |
[] |
не определена |
new |
не определена |
() |
string gettype (var) - вернет тип переменной строкой или "unknown type";
int settype (string var, string type) - преобразует var к типу type;
функции проверки типов возвращают true/false:
is_array();
is_double(), is_float(), is_real() - синонимы;
is_long(), is_int(), is_integer() - синонимы;
is_string();
is_object()
int intval (var), double doubleval (var), string strval (var) приводят типы; можно это делать и в стиле Си, например, $d=(double)$i;
функции проверки переменных:
int isset (var) - вернет true, если переменная с именем var существует;
int unset (var) - удаляет переменную с именем var и вернет true в случае успеха;
int empty(var) - вернет false, если var существует и непуста, иначе true
Условный if - с стиле Си, в составном условном elseif пишется вместе. Работает switch в стиле Си. Работают циклы:
while (условие) выражение;
for (выражение1; условие; выражение2) выражение;
do выражение; while (условие);
В циклах разрешены break и continue.
Всё остальное - функции, функции и функции, которых в PHP сотни. Нетрудно найти в Сети удобные справочники по PHP в формате справки Windows *.chm.
гостевая; E-mail |