Pers.narod.ru. PHP. PHP - кратчайший обзор

Сразу скажу, что работать с PHP имеет смысл, если уже знаете разметку HTML и язык программирования Си (Си++). Насчет HTML всё понятно, а Си нужен, чтоб быстро привыкнуть к синтаксису и уменьшить риск окончательно испортить себе стиль программирования, чему PHP немало способствует.

Отношение программиста к PHP проходит обычно 3 стадии:
1. На этом языке я могу написать что угодно!
2. На этом языке можно сделать что-то хорошее...
3. На этом языке лучше вообще ничего не делать.
Как правило, "пыхарей", т.е., профессиональных программеров на PHP, легко разделить на 2 категории: одни умные, а другие пишут свою супер-CMS (движок) "на все случаи жизни" :)

Отчасти эта заметка была написана мной в давние времена как памятка. Про установку и настройку PHP под Windows XP и ей подобные, а также про подключение к базе данных написано здесь.

1. Вставка скрипта в HTML

<? Код PHP ?> - стиль разработчиков (работает, если в файле php.ini установлена директива short_open_tag = On)
<?php Код PHP ?> - стиль XML
<script language="php"> Код PHP</script> - стиль скриптов
<% Код PHP %> - стиль ASP (работает, если установлена директива asp_tags = On)

Чаще всего, конечно, не "скрипт вставляется в HTML", а файл скрипта с расширением PHP формирует документ HTML, отдаваемый браузеру. Операторы разделяются точкой с запятой; лишние разделители игнорируются. Комментарии - в стилях Си /* : */ и // и Perl (# - до конца строки)

2. Имена, типы переменных, операции

Все имена переменных начинаются с $ Переменные из формы 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>
Таблица. Все приоритеты операций PHP (снизу вверх):

Ассоциативность

Операции

cлева направо

,

cлева направо

or

cлева направо

xor

cлева направо

and

cлева направо

print

cлева направо

= += -= *= /= .= %= &= |= ^= ~= <<= >>=

cлева направо

||

cлева направо

&&

cлева направо

|

cлева направо

^

cлева направо

&

не определена

== != ===

не определена

< <= > >=

cлева направо

<< >>

cлева направо

+ - .

cлева направо

* / %

справа налево

! ~ ++ -- (int) (double) (string) (array) (object) @

справа налево

[]

не определена

new

не определена

()

3. Работа с типами и проверка состояния переменных

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

4. Стандартные управляющие конструкции

Условный if - с стиле Си, в составном условном elseif пишется вместе. Работает switch в стиле Си. Работают циклы:
while (условие) выражение;
for (выражение1; условие; выражение2) выражение;
do выражение; while (условие);

В циклах разрешены break и continue.

Всё остальное - функции, функции и функции, которых в PHP сотни. Нетрудно найти в Сети удобные справочники по PHP в формате справки Windows *.chm.

Рейтинг@Mail.ru

вверх гостевая; E-mail
Hosted by uCoz