Структура PHP - программы.
Пишем программу на PHP:
<?
echo "<html><body><h1>";
echo " Hello, $my_name";
echo "</h1></body></html>";
?>
Код PHP заключается в специальные тэги <? и ?>. После тэга начала сценария (<?) следует первый оператор - echo. Оператор echo осуществляет вывод информации. Выводимая оператором echo строка заключается в кавычки. Первый оператор выводит тэги html, body, h1. Второй оператор echo "Hello, $my_name"; выводит слово Hello и значение переменной $my_name. Перед именем переменной ставится знак $. Присваивание переменной какого-либо значения осуществляется оператором присвоения, который обозначается знаком "=" (равно). Примеры:
$i=0;
$d=7;
$s=5 + $d// $i=12
PHP сценарии можно записывать и так:
<html><body><h1>
<? echo "Hello, $my_name"; ?>
</h1></body></html>
Комментарии в сценариях могут быть трех типов:
# это комментарий
// это тоже комментарий
/*
А это
длинный многострочный
комментарий
*/
Правила задания переменных в PHP:
Тип переменной
|
Описание
|
integer | Целое число. |
double (или float) | Вещественное число очень большой точности. |
string | Строка. |
array | Массив |
object | Язык PHP поддерживает принципы объектно-ориентированного программирования. Доступ к отдельным элементам объекта осуществляется с помощью оператора -> |
bool |
Логический тип данных. Переменные этого типа могут принимать только одно из двух значений: true (истина) или false (ложь). |
Функции определения и задания типа данных.
Используются семь функций для определения типа данных:
Логические переменные и их особенности.
В PHP истиной является любое не равное нулю число, любая непустая строка, значение true. Значение false, пустая строка, нуль - это ложь. Например:
<?
echo false;
echo true;
?>
Первый оператор выводит пустую строку, то есть ничего не выводит, а второй - выведет 1.
В использовании логических переменных в PHP имеется одна особенность. Если в операторах сравнения (= =, !=, <,>) один тип является логическим, то и второй тоже воспринимается, как логический. Модифицируем сценарий так:
<?
$x=10;
if ($x==1) echo " Переменная равна 1\n";
if ($x==true) echo " Переменная равна True\n"
?>
В первой строке переменной $x было присвоено значение 10. Затем $x сравнивается с 1 и если $x равно 1, то выводится строка "Переменная равна 1". Затем значение переменной сравнивается со значением True. И если $x равно true, то выводится строка "Переменная равна True". Исходя из приведенного выше утверждения, должна быть выведена только вторая строка.
Константы содержат постоянные значения. Изменить значение константы , которое ей было присвоено после ее объявления - нельзя. Их удобно использовать для хранения значений, например, имя разработчика программы.
Задание констант. Функция define()
Для определения константы используется функция define. Эта функция имеет следующий формат:
define ($name, $value, $case_sen)
где $name - имя константы;
$value - значение константы;
$case_sen - необязательный параметр логического типа, указывающий следует ли учитывать регистр букв (true) или нет (false).
Пример:
define ("pi",3.14,true);
echo pi;
При объявлении констант нужно учитывать два важных правила:
Проверка существования констант. Функция defined()
Для проверки существования константы можно использовать функцию defined(). Данная функция возвращает true, если константа объявлена и false - если не объявлена.
Пример:
defined ("pi",3.14,true);
if ((defined("pi")==true) echo "Константа объявлена";
Имя
|
Значение
|
__FILE__ (два знака подчеркивания до FILE и два после) |
Содержит имя программы, которая выполняется в данный момент. |
__LINE__ | Номер строки, которую сейчас обрабатывает интерпретатор. |
PHP_OS | Имя и версия операционной системы, под которой запущен PHP. |
PHP_VERSION | Версия PHP. |
TRUE,true,FALSE,false | Логические константы. |
Присвоение значений. Оператор присваивания.
Оператор присваивания позволяет придать переменной некоторое значение.
Например:
$x = 4;
$y = $s;
Работа оператора присваивания состоит из двух последовательных этапов:
Проверка существования переменной. Функция isset()
Благодаря возможности проверки существования переменной можно проверить, передан ли сценарию определенный параметр или нет, а только потом начинать с ним работать. Например:
<?
if (isset($m_name))
{
$x = $m_name;
}
?>
С помощью функции isset($m_name) проверяем существование переменной $m_name, а только потом начинаем с ней работать. В результате сценарий не прекратит свою работу из-за ошибки пользователя, если тот забудет ввести свое имя.
Удаление переменных. Функция unset()
Ненужные переменные можно удалить с помощью функции unset(). Эта функция удаляет указанную в скобках переменную из памяти, и программа продолжает выполняться как-будто эта переменная не была инициализирована. Например:
<?
$a = читаем большой_файл;
обрабатываем_файл;
unset($a); // освобождаем память
?>
Также возможно использование скобок. К арифметическим операциям можно отнести операции инкремента и декремента:
Данные операции предназначены для установки или снятия групп битов целочисленной переменной:
0000 - это ноль
0001 - это 1
0010 - это 2
0011 - это 3
0100 - это 4
0101 - это5
. . .
1111 - это 15
. . .
К битовым операциям относятся:
Логические выражения - это выражения, результатом которых может быть или истина, или ложь. Примеры:
$x = true; // $x = истина
$x = $y<0; // $x = true, если $y<0
$x = $y== 0; // $x = true, если $y = 0
$x = $y>0&&$y<=10; // $x = true, если $y<0 и $y<=10, то
// есть $y в диапазоне от 0 до 10.
В логических выражениях можно использовать операторы сравнения и логические операции.
== - равно;
!= - не равно;
< - меньше;
> - больше;
>= - больше или равно;
<= - меньше или равно.
Между строками в кавычках и в апострофах существует большая разница. Если строка заключена в апострофы, то все символы ,трактуются как есть. Исключения составляют последовательности \` и \\. Первая представляет собой обыкновенный апостроф, а вторая - обратную наклонную черту.
Строки в кавычках позволяют вывести значение переменной. Пример:
$s=10;
echo "$a"; // строка в кавычках
echo '$a'; // строка в апострофах
Первый оператор выведет 10 - значение переменной $a. Второй напечатает то, что заключено между апострофами - $a.
Кроме того, строки в кавычках могут содержать следующие специальные символы:
\n - символ новой строки;
\r - символ возврата каретки;
\t - символ табуляции;
\$ - знак доллара;
\" - кавычка;
\\ - обратный слеш;
\xNN - символ с кодом NN (в шестнадцатеричной системе).
Строковых операций в PHP всего две:
$s1.$s2 - конкатенация (слияние) двух строк;
$s1[n] - обращение к символу в строке.
Все остальные действия над строками выполняются стандартными функциями.
Присвоить значение строке можно:
$s = "Hello";
$s = "Это большая
многострочная строковая
константа";
Многострочные строковые переменные.
Записать большое текстовое сообщение можно так:
$s = <<<LABEL
Текст
. . .
LABEL;
При использовании этого способа записи многострочных строковых переменных, нужно помнить три правила:
Пример вывода строки "Hello word!" с помощью метода слияния строк:
<?
$a = "Hell"
echo $a."o world!";
?>
Для запуска внешней программы и присвоение переменной результата ее работы, используются строки в обратных кавычках (они находятся под тильдой):
$directory = `dir`;
echo "<h1>Содержимое каталога:</h1><br><pre> $directory";
Оператор эквивалентности (= = =)
Пример:
<?
$x = 0; //число, равное 0
$s = ""; //пустая строка
echo gettype ($x)."\n";
echo gettype ($s)."\n";
if ($x===$s) echo "x =s";
Жесткая ссылка - это просто псевдоним имени другой переменной. Для создания жесткой ссылки используется оператор &:
<?
$x = 77;
$link = &$x;
$kink = 66;
echo $link;
?>
В результате программа выведет - 66. Для разрыва связи между переменной и ссылкой используется функция UnSet():
UnSet ($link);
Саму переменную нельзя удалить пока на нее ссылается хотя бы одна ссылка.
Это обыкновенная переменная, содержащая имя другой переменной. Для доступа к значению ссылки используется двойной знак $$:
<?
$x = 77;
$link ="x"; // символическая ссылка на переменную $x
echo $$link; // выводит 77
echo $link; // выводит x
$$link = 66; // аналогично $x = 66
echo $x; // выводит 66
?>
использование символических ссылок может запутать программу, лучше использовать жесткие ссылки.
Конструкция if-else (условный оператор) является, самой распространенной. Синтаксис конструкции if-else таков:
if (логическое выражение)
оператор_1;
else
оператор_2;
Первый оператор будет выполнен, если логическое выражение истинно, второй - если логическое выражение ложно.
Сокращенная форма записи:
if (логическое выражение)
оператор_1;
Если выполняется не один оператор, а целая группа, тогда операторы помещают в блок {}:
if (логическое выражение)
{
оператор_1;
. . .
оператор_i;
}
else
{
оператор_i+1;
. . .
оператор_n;
}
Очевидно, что несколько операторов можно записать в одну строку:
if (логическое выражение) { оператор_1; . . . оператор_i; }
В данном случае после фигурной скобки можно ставить точку с запятой, а можно и не ставить. Но если используется полная конструкция (то есть "else"), тогда точка с запятой не ставится. Если вместо блоков операторов используется только один оператор, тогда точка с запятой после него обязательна:
if ($a>5) echo "a>5";
else echo "a<=5";
Цикл позволяет повторить определенное количество раз какие-нибудь операторы. Данные операторы называются телом цикла. Проход цикла называется итерацией. Поддерживается три типа циклов:
Принцип работы цикла с предусловием:
Синтаксис цикла с предусловием:
while (логическое выражение)
инструкция;
В данном случае телом цикла является "инструкция". Обычно тело цикла состоит из большего числа операторов. Пример цикла:
<?
$i = 0;
while ($i ++ <10) echo $i;
?>
Данная программа выведет строку 12345678910. Следует обратить внимание на последовательность выполнения условия $i++ <10.
Сначала проверяется условие, а только потом увеличивается значение переменной. Если же поставить операцию инкремента перед переменной (++$i <10), то сначала будет выполнено увеличение переменной, а только потом - сравнение. В результате получим строку 123456789.
Цикл с постусловием отличается от цикла с предусловием тем, что сначала выполняется тело цикла, а только потом проверяется условие. Таким образом ,тело цикла хотя бы один раз, но будет обязательно выполнено.
Синтаксис цикла do while:
do
{
//тело цикла
}
while (условие);
Пример:
<?
$i = 1;
do echo $i; while ($i++ <10);
?>
В результате получаем строку 12345678910.
Цикл со счетчиком используется для выполнения тела цикла определенное количество раз.
Синтаксис цикла:
for (команды_инициализации; условие; команды_после инициализации) { тело цикла }
Оператор for начинает свою работу с выполнения команд инициализации. Данные команды выполняются всего лишь раз. После этого выполняется условие: если оно истинно, выполняется тело цикла. После того, как будет выполнен последний оператор тела, выполняются команды "после итерации". Затем снова проверяется условие, в случае, если оно истинно, выполняется тело цикла и поститерационные команды, и т.д.
Пример:
<?
for ($i =0; $i<10; $i++) echo $i;
?>
В результате сценарий выведет строку 0123456789.
Каждый цикл может содержать в своем теле несколько циклов. Каждый из этих циклов называется вложенным циклом. Вкладываться может неограниченное число циклов, причем они могут быть разного типа - while, do или for.
При использовании циклом можно использовать операторы break и continue. Первый прерывает работу всего цикла, а второй - только работу текущей итерации. Примеры:
<?
$i = 0;
while ($i++ <10)
{
if ($i ==3) break;
echo "Итерация $i\n";
}
?>
В этом примере после второй итерации работа цикла будет прервана и программа выведет строки:
Итерация 1
Итерация 2
Если же вместо оператора break использовать оператор continue, будет прервана работа только после третьей итерации и получаем вывод:
Итерация 1
Итерация 2
Итерация 4
Итерация 5
. . .
Итерация 10
Цикл перебора массивов foreach.
Данный цикл предназначен специально для перебора массивов.
Синтаксис данного цикла таков:
foreach (массив as $ключ=>$значение)
операторы;
Операторы, содержащиеся в теле цикла, будут выполнены для каждого элемента массива. Переменная $ключ будет содержать имя ключа элемента, а переменная $значение - значение элемента.
Следующий пример отображает значение массива $GLOBALS, содержащего глобальные переменные (будут выведены как имена переменных, так и их значения):
<?
foreach ($GLOBALS as $key=>$value)
echo "$key = $value\n";
?>
Инструкция switch-case (конструкция выбора).
Данная конструкция предназначена для выбора действий, в зависимости от значения указанного выражения. Данную конструкцию нужно использовать, если предполагаемых значений много, и для каждого варианта нужно выполнить специфическое действие.
Синтаксис switch-case таков:
switch (выражение)
{
case значение1 : команды_1; [break;]
. . .
case значение N : команды_N; [break;]
[default: команды_по_умолчанию; [break;]]
}
Альтернативный синтаксис конструкции выглядит так:
switch (выражение):
case значение1: команды1; [break;]
. . .
case значениеN: команды_N; [break;]
[defaut: команды_по_умолчанию; [break;]]
endswitch;
Работает эта конструкция следующим образом:
Синтаксис инструкции:
require имя_файла;
Интерпретатор анализирует сценарий и, найдя require, просто заменяет ее содержимым указанного файла. Это может быть HTML - файл или на PHP. В последнем случае содержимое файла должно быть обрамлено тэгами <? и ?> - как в случае с обыкновенным сценарием. Вставка содержимого файла, происходит ДО выполнения сценария. Например:
<html><head>
<title>My Company's Official Web Page</title>
</head>
<body>
Сценарий:
require header.html
/* тело документа */
В отличии от require директива include позволяет включить код в сценарий во время выполнения сценария.
Синтаксис:
include имя_файла;
Всегда заключайте инструкцию include в фигурные скобки!!!
Особенности использования include и require.
PHP преобразует сценарий в собственное внутренне представление. Первую строку, вторую, третью ... И так, пока не дойдет до инструкции include. Затем PHP прекращает транслировать сценарий и переключается на указанный в include файл.
Require включается до выполнения сценария, то есть на момент трансляции он уже включен в сценарий и PHP нет необходимости ждать, пока транслируется указанный файл.
Инструкции однократного включения include_once и require_once.
Используя данные инструкции, можно быть уверенным, что ни один файл не будет включен дважды.
Работают эти инструкции точно также, как и include и require, но с одним отличием: перед включением файла интерпретатор проверяет, включался ли это файл или нет.