«Бог не меняет того, что (происходит) с людьми, пока они сами не изменят своих помыслов.» Коран, Сура 12:13

СУБД/лекция 7 семестр 2 — различия между версиями

Материал из Wiki
Перейти к: навигация, поиск
(Просмотр результата)
(Основы языка)
 
(не показаны 19 промежуточных версий 1 участника)
Строка 1: Строка 1:
 +
== Основы языка==
 +
* [[СУБД/лекция 7 семестр 2 (раздел)/Переменные | Переменные ]]
 +
* [[СУБД/лекция 7 семестр 2 (раздел)/Управляющие конструкции | Управляющие конструкции ]]
 +
* [[СУБД/лекция 7 семестр 2 (раздел)/Строковые функции PHP | Строковые функции PHP ]]
 +
* [[СУБД/лекция 7 семестр 2 (раздел)/Функции PHP для работы с массивами | Функции PHP для работы с массивами ]]
 +
* [[СУБД/лекция 7 семестр 2 (раздел)/Работа с сетью | Работа с сетью ]]
 +
* [[СУБД/лекция 7 семестр 2 (раздел)/Функции для работы с датой и временем| Функции для работы с датой и временем ]]
 +
* [http://www.php.su/lessons/ Уроки по работе с  PHP]
 +
 +
[http://www.mirsite.ru/phpbooks.htm Список литературы]
 +
[http://www.mirsite.ru/php.htm Литература 1]
 +
[http://www.php.su/learnphp/cs/ Литература 2]
 +
 
==Что нужно для работы с php==
 
==Что нужно для работы с php==
 
* Нужен сервер выполняющий скрипты
 
* Нужен сервер выполняющий скрипты
Строка 5: Строка 18:
 
** Интернет сервер  
 
** Интернет сервер  
 
* Пишем код, закачиваем на сервер, просматриваем результат выполнения в браузере.
 
* Пишем код, закачиваем на сервер, просматриваем результат выполнения в браузере.
* Документация по синтаксису и возможностям языка  
+
* Документация по синтаксису и возможностям языка
[http://www.mirsite.ru/php.htm 1 sourse]
+
  
 
== Устанавливаем локальный сервер ==
 
== Устанавливаем локальный сервер ==
Строка 46: Строка 58:
 
* Видим результат выполнения скрипта
 
* Видим результат выполнения скрипта
 
  Hello Viktor!
 
  Hello Viktor!
== Основы ==
 
===Управляющие конструкции ===
 
[http://www.php.su/learnphp/cs/ source 1]
 
 
Любой сценарий PHP сформирован из ряда конструкций. Конструкцией могут быть операторы, функции, циклы, условные операторы, даже конструкции, которые не делают ничего (пустые конструкции). Конструкции обычно заканчиваются точкой с запятой. Кроме того, конструкции могут быть сгруппированы в группу, формируя группу конструкций с изогнутыми фигурными скобками {...}. Группа конструкций - это также отдельная конструкция. Конструкции языка PHP похожи на конструкции языка Си.
 
 
В PHP существуют шесть основных групп управляющих конструкций. Итак, основные группы управляющих конструкций PHP и их состав:
 
 
* Условные операторы:
 
** '''if'''
 
** '''else'''
 
** '''elseif'''
 
* Циклы:
 
** '''while'''
 
** '''do-while'''
 
** '''for'''
 
** '''foreach'''
 
** '''break'''
 
** '''continue'''
 
* Конструкции выбора:
 
** '''switch-case'''
 
* Конструкции объявления:
 
** '''declare'''
 
* Конструкции возврата значений:
 
** '''return'''
 
* Конструкции включений:
 
** '''require()'''
 
** '''include()'''
 
** '''require_once()'''
 
** '''include_once()'''
 
* Альтернативный синтаксис конструкций PHP
 
=== Условные операторы PHP ===
 
Условные операторы являются, пожалуй, наиболее распространенными конструкциями во всех алгоритмических языках программирования. Рассмотрим основные условные операторы языка PHP.
 
 
'''Конструкция if'''
 
 
Синтаксис конструкции if аналогичен конструкции if в языке Си:
 
 
<source lang="php"><?php
 
if (логическое выражение) оператор;
 
?></source>
 
 
Согласно выражениям PHP, конструкция if содержит логическое выражение. Если логическое выражение истинно (true), то оператор, следующий за конструкцией if будет исполнен, а если логическое выражение ложно (false), то следующий за if оператор исполнен не будет. Приведем примеры:
 
 
<source lang="php"><?php
 
if ($a > $b) echo "значение a больше, чем b";
 
?></source>
 
 
В следующем примере если переменная $a не равна нулю, будет выведена строка "значение a истинно (true)":
 
 
<source lang="php"><?php
 
if ($a) echo "значение a истинно (true) ";
 
?></source>
 
 
В следующем примере если переменная $a равна нулю, будет выведена строка "значение a ложно (false)":
 
<source lang="php">
 
<?php
 
if (!$a) echo "значение a ложно (false) ";
 
?>
 
</source>
 
Часто вам будет необходим блок операторов, который будет выполняться при определенном условном критерии, тогда эти операторы необходимо поместить в фигурные скобки {...} Пример:
 
<source lang="php">
 
<?php
 
if ($a > $b) {
 
      echo "a больше b";
 
      $b = $a;
 
}
 
?>
 
</source>
 
Приведенный пример выведет сообщение, "a больше b", если $a > $b, а затем переменная $a будет приравнена к переменной $b. Заметим, что данные операторы выполняются в теле конструкции if.
 
 
'''Конструкция else'''
 
 
Часто возникает потребность исполнения операторов не только в теле конструкции if, если выполнено какое-либо условие конструкции if, но и в случае, если условие конструкции if не выполнено. В данной ситуации нельзя обойтись без конструкции else. В целом, такая конструкция будет называться конструкцией if-else.
 
 
Синтаксис конструкции if-else такой:
 
 
if (логическое_выражение)
 
инструкция_1;
 
else
 
инструкция_2;
 
 
Действие конструкции if-else следующее: если логическое_выражение истинно, то выполняется
 
инструкция_1, а иначе — инструкция_2. Как и в любом другом языке, конструкция else может опускаться, в этом случае при получении должного значения просто ничего не делается.
 
 
Если инструкция_1 или инструкция_2 должны состоять из нескольких команд, то они, как всегда, заключаются в фигурные скобки. Например:
 
<source lang="php">
 
<?php
 
if ($a > $b) {
 
      echo "a больше, чем b";
 
} else {
 
      echo "a НЕ больше, чем b";
 
}
 
?></source>
 
 
'''Конструкция if-else имеет еще один альтернативный синтаксис:'''
 
 
if (логическое_выражение):
 
команды;
 
elseif(другое_логическое_выражение):
 
другие_команды;
 
else:
 
иначе_команды;
 
endif
 
 
Обратите внимание на расположение двоеточия (:)! Если его пропустить, будет сгенерировано сообщение об ошибке. И еще: как обычно, блоки elseif и else можно опускать.
 
 
'''Конструкция elseif'''
 
 
elseif - это комбинация конструкций if и else. Эта конструкция расширяет условную конструкцию if-else.
 
 
Приведем синтаксис конструкции elseif:
 
 
if (логическое_выражение_1)
 
оператор_1;
 
elseif (логическое_выражение_2)
 
оператор_2;
 
else
 
оператор_3;
 
 
Практический пример использования конструкции elseif:
 
 
<source lang="php"><?php
 
if ($a > $b) {
 
      echo "a больше, чем b";
 
} elseif ($a == $b) {
 
      echo "a равен b";
 
} else {
 
      echo "a меньше, чем b";
 
}
 
?></source>
 
 
{{X|24px}}Вообще, конструкция elseif не очень удобна, поэтому применяется не так часто.
 
 
 
=== Циклы: ===
 
 
На втором месте по частоте использования, после конструкций условий (условных операторов), находятся циклы.
 
 
Циклы позволяют повторять определенное (и даже неопределенное - когда работа цикла зависит от условия) колличество раз различные операторы. Данные операторы называются телом цикла. Проход цикла называется итерацией.
 
 
PHP поддерживает три вида циклов:
 
# Цикл с предусловием (while);
 
# Цикл с постусловием (do-while);
 
# Цикл со счетчиком (for);
 
# Специальный цикл перебора массивов (foreach).
 
 
При использовании циклов есть возможность использования операторов break и continue. Первый из них прерывает работу всего цикла, а второй - только текущей итерации.
 
 
Рассмотрим циклы PHP:
 
 
'''Цикл с предусловием while'''
 
 
Цикл с предусловием while работает по следующим принципам:
 
* Вычисляется значение логического выражения.
 
* Если значение истинно, выполняется тело цикла, в противном случае - переходим на следующий за циклом оператор.
 
 
''''''Синтаксис цикла с предусловием:''''''
 
 
while (логическое_выражение)
 
инструкция;
 
 
В данном случае телом цикла является инструкция. Обычно тело цикла состоит из большого числа операторов. Приведем пример цикла с предусловием while:
 
 
<source lang="php"><?php
 
$x=0;
 
while ($x++<10) echo $x;
 
// Выводит 12345678910
 
?></source>
 
 
Обратите внимание на последовательность выполнения операций условия $x++<10. Сначала проверяется условие, а только потом увеличивается значение переменной. Если мы поставим операцию инкремента перед переменной (++$x<10), то сначала будет выполнено увеличение переменной, а только затем - сравнение. В результате мы получим строку 123456789. Этот же цикл можно было бы записать по-другому:
 
<source lang="php">
 
<?php
 
$x=0;
 
while ($x<10)
 
{
 
$x++; // Увеличение счетчика
 
echo $x;
 
}
 
// Выводит 12345678910
 
?></source>
 
 
Если мы увеличим счетчик после выполнения оператора echo, мы получим строку 0123456789. В любом случае, мы имеем 10 итераций. Итерация - это выполение операторов внутри тела цикла.
 
 
Подобно конструкции условного оператора if, можно группировать операторы внутри тела цикла while, используя следующий альтернативный синтаксис:
 
 
while (логическое_выражение):
 
инструкция;
 
...
 
endwhile;
 
 
Пример использования альтернативного синтаксиса:
 
 
<source lang="php"><?php
 
$x = 1;
 
while ($x <= 10):
 
      echo $x;
 
      $x++;
 
endwhile;
 
?></source>
 
 
'''Цикл с постусловием do while'''
 
 
В отличие от цикла while, этот цикл проверяет значение выражения не до, а после каждого прохода (итерации). Таким образом, тело цикла выполняется хотя бы один раз. Синтаксис цикла с постусловием такой:
 
 
do
 
{
 
тело_цикла;
 
}
 
while (логическое_выражение);
 
 
После очередной итерации проверяется, истинно ли логическое_выражение, и, если это так, управление передается вновь на начало цикла, в противном случае цикл обрывается.
 
Альтернативного синтаксиса для do-while разработчики PHP не предусмотрели (видимо, из-за того, что, в отличие от прикладного программирования, этот цикл довольно редко используется при программировании web-приложений).
 
 
Пример скрипта, показывающего работу цикла с постусловием do-while:
 
 
<source lang="php"><?php
 
$x = 1;
 
do {
 
      echo $x;
 
} while ($x++<10);
 
?></source>
 
 
Рассмотренный сценарий выводит: 12345678910
 
 
'''Цикл со счетчиком for'''
 
 
Цикл со счетчиком используется для выполнения тела цикла определенное число раз. С помощью цикла for можно (и нужно) создавать конструкции, которые будут выполнять действия совсем не такие тривиальные, как простая переборка значения счетчика.
 
 
Синтаксис цикла for такой:
 
 
for (инициализирующие_команды; условие_цикла; команды_после_итерации) { тело_цикла; }
 
 
Цикл for начинает свою работу с выполнения инициализирующих_команд. Данные команды выполняются только один раз. После этого проверяется условие_цикла, если оно истинно (true), то выполняется тело_цикла. После того, как будет выполнен последний оператор тела, выполняются команды_после_итерации. Затем снова проверяется условие_цикла. Если оно истинно (true), выполняется тело_цикла и команды_после_итерации, и.т.д.
 
 
<source lang="php"><?php
 
for ($x=0; $x<10; $x++) echo $x;
 
?></source>
 
 
Данный сценарий выводит: 0123456789
 
 
Есть вариант вывода строки 12345678910:
 
 
<source lang="php"><?php
 
for ($x=0; $x++<10;) echo $x;
 
// Выводит 12345678910
 
?></source>
 
 
В данном примере мы обеспечили увеличение счетчика при проверке логического выражения. В таком случае нам не нужны были команды, выполняющиеся после итерации.
 
 
Если необходимо указать несколько команд, их можно разделить запятыми, пример:
 
 
<source lang="php"><?php
 
for ($x=0, $y=0; $x<10; $x++, $y++) echo $x;
 
// Выводит 0123456789
 
?></source>
 
 
Приведем еще один, более практичный пример использования нескольких команд в цикле for:
 
 
<source lang="php"><?php
 
for($i=0,$j=0,$k="Точки"; $i<10; $j++,$i+=$j) { $k=$k."."; echo $k; }
 
// Выводит Точки.Точки..Точки...Точки....
 
?></source>
 
 
Рассмотренный пример (да и вообще любой цикл for) можно реализовать и через while, только это будет выглядеть не так изящно и лаконично.
 
 
Для цикла for имеется и альтернативный синтаксис:
 
 
for(инициализирующие_команды; условие_цикла; команды_после_итерации):
 
операторы;
 
endfor;
 
 
'''Цикл перебора массивов foreach'''
 
 
В PHP4 появился еще один специальный тип цикла - foreach. Данный цикл предназначен специально для перебора массивов.
 
 
Синтаксис цикла foreach выглядит следующим образом:
 
 
foreach (массив as $ключ=>$значение)
 
команды;
 
 
Здесь команды циклически выполняются для каждого элемента массива, при этом очередная пара ключ=>значение оказывается в переменных $ключ и $значение. Приведем пример работы цикла foreach:
 
 
<source lang="php"><?php
 
$names["Иванов"] = "Андрей";
 
$names["Петров"] = "Борис";
 
$names["Волков"] = "Сергей";
 
$names["Макаров"] = "Федор";
 
foreach ($names as $key => $value) {
 
echo "<b>$value $key</b><br>";
 
}
 
?></source>
 
 
Рассмотренный сценарий выводит:
 
 
Андрей Иванов
 
Борис Петров
 
Сергей Волков
 
Федор Макаров
 
 
У цикла foreach имеется и другая форма записи, которую следует применять, когда нас не интересует значение ключа очередного элемента. Выглядит она так:
 
 
foreach (массив as $значение)
 
команды;
 
 
В этом случае доступно лишь значение очередного элемента массива, но не его ключ. Это может быть полезно, например, для работы с массивами-списками:
 
<source lang="php">
 
<?php
 
$names[] = "Андрей";
 
$names[] = "Борис";
 
$names[] = "Сергей";
 
$names[] = "Федор";
 
foreach ($names as $value) {
 
echo "<b>$value</b><br>";
 
}
 
?></source>
 
 
{{ЖЛампа|24px}}'''Внимание:''' Цикл foreach оперирует не исходным массивом, а его копией. Это означает, что любые изменения, которые вносятся в массив, не могут быть "видны" из тела цикла. Что позволяет, например, в качестве массива использовать не только переменную, но и результат работы какой-нибудь функции, возвращающей массив (в этом случае функция будет вызвана всего один раз - до начала цикла, а затем работа будет производиться с копией возвращенного значения).
 
 
'''Конструкция break'''
 
 
Очень часто для того, чтобы упростить логику какого-нибудь сложного цикла, удобно иметь возможность его прервать в ходе очередной итерации (к примеру, при выполнении какого-нибудь особенного условия). Для этого и существует конструкция break, которая осуществляет немедленный выход из цикла. Она может задаваться с одним необязательным параметром - числом, которое указывает, из какого вложенного цикла должен быть произведен выход. По умолчанию используется 1, т. е. выход из текущего цикла, но иногда применяются и другие значения. Синтаксис конструкции break:
 
 
break; // По умолчанию
 
break(номер_цикла); // Для вложенных циклов (указывается номер прерываемого цикла)
 
 
Приведем примеры:
 
 
<source lang="php"><?php
 
$x=0;
 
while ($x++<10) {
 
if ($x==3) break;
 
echo "<b>Итерация $x</b><br>";
 
}
 
// Когда $x равен 3, цикл прерывается
 
?></source>
 
 
Рассмотренный сценарий выводит:
 
 
Итерация 1
 
Итерация 2
 
 
Если нам нужно прервать работу определенного (вложенного) цикла, то нужно передать конструкции break параметр - номер_цикла, например, break(1). Нумерация циклов выглядит следующим образом:
 
 
for (...) // Третий цикл
 
{
 
  for (...) // Второй цикл
 
  {
 
      for (...) // Первый цикл
 
      {
 
      }
 
  }
 
}
 
 
'''Конструкция continue'''
 
 
Конструкция continue так же, как и break, работает только "в паре" с циклическими конструкциями. Она немедленно завершает текущую итерацию цикла и переходит к новой (конечно, если выполняется условие цикла для цикла с предусловием). Точно так же, как и для break, для continue можно указать уровень вложенности цикла, который будет продолжен по возврату управления.
 
 
В основном continue позволяет вам сэкономить количество фигурных скобок в коде и увеличить его удобочитаемость. Это чаще всего бывает нужно в циклах-фильтрах, когда требуется перебрать некоторое количество объектов и выбрать из них только те, которые удовлетворяют определенным условиям. Приведем пример использования конструкции continue:
 
 
<source lang="php"><?php
 
$x=0;
 
while ($x++<5) {
 
if ($x==3) continue;
 
echo "<b>Итерация $x</b><br>";
 
}
 
// Цикл прервется только на третьей итерации
 
?></source>
 
 
Рассмотренный скрипт выводит:
 
 
Итерация 1
 
Итерация 2
 
Итерация 4
 
Итерация 5
 
 
Грамотное использование '''break''' и '''continue''' позволяет заметно улучшить "читабельность" кода и количество блоков else.
 
 
=== Конструкции выбора: ===
 
» switch-case
 
 
 
=== Конструкции объявлений: ===
 
» declare
 
 
 
=== Конструкции возврата значений: ===
 
» return
 
 
 
=== Конструкции включений: ===
 
» require
 
» include
 
» require_once
 
» include_once
 
 
 
=== Дополнительно: ===
 
» Альтернативный синтаксис конструкций PHP
 

Текущая версия на 22:52, 29 апреля 2014

Содержание

Основы языка

Список литературы
Литература 1
Литература 2

Что нужно для работы с php

  • Нужен сервер выполняющий скрипты
    • Локальный Denwer
    • Ссылка на скачивание Скачать
    • Интернет сервер
  • Пишем код, закачиваем на сервер, просматриваем результат выполнения в браузере.
  • Документация по синтаксису и возможностям языка

Устанавливаем локальный сервер

  1. Скачиваем сервер содержащий apache php mysql (см. ссылку выше)
  2. Устанавливаем следуя всем указаниям
  3. Запускаем Denwer (в указанной папке при установке выполнить {Папка для установки}\denwer\Run.exe )
  4. Если не запустился apache смотрим не заняты ли порты 443 и 80
    1. В командной строке если у вас win7 Запросите "netstat -aon | findstr :443"
    2. Затем узнайте, что это за процесс: "tasklist /svc | findstr <идентификатор процесса (число) из предыдущего вывода>"
    3. Остановите службу занимающую порт или выключьте программу которая занимает порт
    4. Если запущен скайп то в настройках соединения снять птичку "Использовать для подключения 443, 80"
  5. Если все запустилось ОК, то заходим в браузер по адресу http://localhost
    1. Должны увидеть страницу натроек Denwera - Установка завершена

Создаем дирреткорию и файлы

  1. При установке у вас спрашивали какой локальный диск создать
  2. Заходим на диск в папку z:\home\localhost\www\
  3. Создаем дирреткорию к примеру lab3
  4. Заходим в нее и создаем файл php к примеру nX.php, где X - номер варианта задания

Пишем код

  • Используйте редактор с подсветкой синтаксиса
    • Notepad++

Первая программа на php

<?php
$name=Viktor;
echo "Hello".$name."!";
?>
  • Каждый скрипт в своем файле
  • Старт и конец кода <?php ..... ?>
  • Вывод сообщения
echo "Hello".$name."!";
  • Склеить две строки - .
  • Обьявить и присвоить значение переменной $var="ololo"; или $var=10 или $var=ololo

Просмотр результата

Hello Viktor!