Similar presentations:
Программирование на стороне сервера
1. Программирование на стороне сервера
2. WEB-сервер
Веб-сервер — сервер,принимающий HTTP-запросы от
клиентов, обычно веббраузеров, и выдающий им
HTTP-ответы, как правило,
вместе с HTML-страницей,
изображением, файлом,
медиа-потоком или другими
данными.
Веб-сервером называют как
программное обеспечение,
выполняющее функции вебсервера, так и непосредственно
компьютер, на котором это
программное обеспечение
3. Дополнительные функции WEB-сервера
Дополнительные функции WEBсервераВеб-серверы могут иметь различные
дополнительные функции, например:
•автоматизация работы веб-страниц;
•ведение журнала обращений пользователей к
ресурсам;
•аутентификация и авторизация пользователей;
•поддержка динамически генерируемых страниц;
•поддержка HTTPS для защищённых соединений
с клиентами.
Часто на компьютере вместе с веб-сервером
устанавливается также и почтовый сервер.
4. Программное обеспечение
В настоящий момент наиболее распространённым веб-сервером,является Apache — свободный веб-сервер, наиболее часто используемый в
UNIX-подобных операционных системах;
Некоторые другие известные веб-серверы:
•IIS от компании Microsoft, распространяемый с ОС семейства Windows
•nginx — свободный веб-сервер, пользующийся большой популярностью
на крупных сайтах
5. Технология распределенных серверов
6. Технология распределенных серверов
7. Стандартное WEB-приложение
8. Локальный WEB-сервер. WAMP-комплексы
Локальный WEB-сервер. WAMPкомплексыWAMP — акроним от
«Windows, Apache, MySQL и
PHP». Данным сокращением
описывается комплектация
пакетов программ, под
соответствующую ОС,
обозначаемую первой
буквой. Данные пакеты в
основном используются для
веб-разработки.
Системы WAMP, MAMP и LAMP поставляются
в форме пакетов, связывающих упакованные
программы таким образом, чтобы их не нужно
было устанавливать и настраивать по
отдельности.
9. WAMP-комплексы
Open Server (рус.)
Денвер (рус.)
XAMPP
EasyPHP
WampServer
Bitnami
10. Серверный язык программирования PHP
11. Программирование на PHP. История развития.
1997 год - двапрограммиста Энди
Гутманс и Зив Сураски
взяли за основу идею
Расмуса и переписали
PHP с нуля. Название
"Personal Home Page"
было изменено на
Hypertext Preprocessor
12. Программирование на PHP. История развития.
• 2000 год – вышла 4-я версия PHP, ставшая стандартом дляВеб-разработки.
• 2004 год – вышла версия PHP5.
• PHP – это гибкий и легкий язык web-программирования,
обладающий широкими возможностями и неоспоримыми
преимуществами.
Изменения в PHP5 включают обновление ядра Zend (Zend Engine 2), что
существенно увеличило эффективность интерпретатора. Введена поддержка
языка разметки XML. Полностью переработаны функции ООП, которые стали
во многом схожи с моделью, используемой в Java. В частности, введён
деструктор, открытые, закрытые и защищённые члены и методы,
окончательные члены и методы, интерфейсы и клонирование объектов.
Нововведения, однако, были сделаны с расчётом сохранить наибольшую
совместимость с кодом на предыдущих версиях языка. На данный момент
последней стабильной веткой является PHP 5.6, которая содержит ряд
изменений и дополнений
13. PHP 7
В 2015 году было объявлено о выходе PHP версии 7.0.0.Новая версия основывается на экспериментальной ветви PHP, которая
изначально называлась phpng (PHP Next Generation — следующее
поколение), и разрабатывалась с упором на увеличение
производительности и уменьшение потребления памяти.
В новой версии добавлена возможность указывать тип возвращаемых
из функции данных, добавлен контроль передаваемых типов для
данных, а также новые операторы.
Однако в седьмой версии была убрана устаревшая
функциональность, что привело к некоторым проблемам с обратной
совместимостью, затруднив перевод старых приложений на новую
версию.
14.
Сегодня РНР — это мощныйкроссплатформенный набор средств, который
располагается на сервере и предназначен для
обработки специального кода, встраиваемого
в HTML-страницу. Благодаря этому,
появляется возможность легко создавать
динамические сайты. Файлы, созданные таким
образом, хранятся и обрабатываются на
сервере, и когда посетитель запрашивает
документ с РНР, скрипт обрабатывается не
браузером посетителя, как, например, Java
Script, а сервером, и посетителю передаются
уже только результаты работы.
15.
РНР (Hypertext Preprocessor)— это серверный языксоздания сценариев, разработанный специально для
Web. В HTML-страницу можно внедрить код РНР,
который будет выполняться при каждом ее
посещении. Код РНР интерпретируется Web-сервером
и генерирует HTML или иной вывод, наблюдаемый
посетителем страницы.
16. Преимущества PHP
РНР обладает множеством преимуществ:• Высокая производительность
• Наличие интерфейсов ко многим различным
системам баз данных
• Встроенные библиотеки для выполнения
многих общих задач, связанных с Web
• Низкая стоимость
• Простота изучения и использования
• Переместимость
• Доступность исходного кода
17.
18. Файл PHP.ini
Конфигурационный файл php.ini содержит всебе настройки PHP, которые действуют на
сервере.
<?php
phpinfo();
?>
19. Hello, World!
<html><head>
<title>Пример</title>
</head>
<body>
<?php
echo “Hello, World!";
?>
</body>
</html>
20. Синтаксис и грамматика.
• СинтаксисPHP
заимствован
непосредственно из C. Java и Perl также
повлияли на синтаксис данного языка.
• Cпособ выхода из HTML и перехода в
"режим PHP кода":
<?php … ?>
21. Разделение инструкций. Типы переменных.
• Инструкции разделяются также как в C - точкойс запятой. Закрывающий тэг (?>) тоже
подразумевает конец утверждения, поэтому
следующие записи эквивалентны:
– <php echo "Это тест"; ?>
– <php echo "Это тест" ?>
• PHP поддерживает переменные типов:
–
–
–
–
–
–
integer - целое
double - число с дробной частью
string - строковая переменная
array - массив
object - объектная переменная
pdfdoc - PDF-документ (только при наличии
поддержки PDF)
22. Типы переменных.
• Тип переменной обычно не устанавливаетсяпрограммистом;
вместо
этого,
он
определяется в зависимости от контекста, в
котором она используется. Чтобы указать тип
переменной непосредственно, используйте
инструкцию cast либо функцию settype(), но
учтите, что переменная может вести себя поразному, в зависимости от того, какой тип
определен для нее в данное время.
• Инициализация
переменной.
Для
инициализации переменной в PHP вы просто
присваиваете ей значение. Для массивов и
объектных переменных, однако, может
использоваться несколько иной механизм.
23. Инициализация массивов.
• Массив может инициализироваться одним издвух
способов:
последовательным
присвоением значений, или посредством
конструкции array().
• При последовательном добавлении значений
в массив вы просто записываете значения
элементов массива, используя пустой индекс.
Каждое
последующее
значение
будет
добавляться в качестве последнего элемента
массива.
$names[] = "Jill";
$names[] = "Jack";
// $names[0] = "Jill"
// $names[1] = "Jack"
• Как в C и Perl, элементы массива нумеруются,
начиная с 0, а не с 1!
24. Инициализация объектов.
• Для инициализации объектной переменнойиспользуйте
новое
предписание
для
сопоставления данного объекта объектной
переменной.
class a
{
function do_a ()
{ echo «Исполняем класс а» }
}
$bar = new a;
$bar -> do_a ();
25. Область переменной.
• Областью переменной является контекст, внутрикоторого она определена. Любая переменная,
определенная внутри функции, по умолчанию
ограничена локальной областью функции. Например:
$a = 1; // глобальная область
Function Test ()
{
echo $a;
// ссылка на переменную локальной области
}
Test ();
• Этот скрипт ничего не выдаст на выходе, поскольку
инструкция echo относится к локальной версии
переменной $a, значение которой присваивается не
внутри этой области.
26. Область переменной.
• Здесь имеется отличие от языка C, в том, чтоглобальные переменные в C автоматически
действуют и внутри функций, если только не
переписываются локальными определениями.
• В PHP глобальные переменные должны быть
продекларированы глобально внутри функции,
если предполагается их использование в
данной функции. Например:
$a = 1; $b = 2;
Function Sum () {
global $a, $b;
$b = $a + $b; }
Sum (); echo $b;
• Этот скрипт выдаст значение "3".
27. Глобальные переменные
• Поскольку $a и $b декларируются глобально внутрифункции, ссылки на них трактуются как ссылки на их
глобальные версии.
• Вторым способом доступа к глобальным переменным
является использование определяемого PHP массива
$GLOBALS:
$a = 1; $b = 2;
Function Sum ()
{
$GLOBALS["b"]=$GLOBALS["a"]+$GLOBALS["b"];
}
Sum (); echo $b;
• Массив $GLOBALS является ассоциативным, в котором имя
глобальной переменной является ключом, а значение этой
переменной является значением элемента массива.
28. Статическая переменная
• Статическая переменная существует только влокальной области функции, но она не теряет
своего значения, когда программа, при
исполнении, покидает эту область:
Function Test ()
{
static $a = 0;
echo $a;
$a++;
}
• При вызове функции Test() она будет выводить
значение $a и увеличивать его.
29. Статическая переменная
• Статические переменные также весьмасущественны, когда функции вызываются
рекурсивно. Рекурсивные функции - это те,
которые вызывают сами себя. Составлять
рекурсивную функцию нужно внимательно, т.к.
при неправильном написании можно сделать
рекурсию
неопределенной.
Следующая
простая функция рекурсивно считает до 10:
Function Test () {
static $count = 0;
$count++;
echo $count;
if ($count < 10) { Test (); }
$count--;
}
30. Изменяемые переменные.
• Иногда бывает удобно давать переменнымизменяемые имена. Такие имена могут изменяться
динамически. Изменяемая переменная берет некое
значение и обрабатывает его как имя переменной. В
примере значение hello может быть использовано
как имя переменной, посредством применения двух
записанных подряд знаков доллара, т.е.:
$a = "hello";
$$a = "world";
• Две переменных определены и сохранены в
символьном дереве PHP: $a с содержимым "hello" и
$hello с содержимым "world".
31. Переменные вне PHP.
• Когдапрограммой-обработчиком
формы
является PHP-скрипт, переменные этой формы
автоматически доступны для данного скрипта
PHP:
<form action="foo.php" method="post">
Name:<input type="text" name="name">
<br><input type="submit">
</form>
• При активизации формы PHP создаст переменную
$name, значением которой будет то содержимое,
которое было введено в поле данной формы.
32. Переменные вне PHP.
• PHP также воспринимает массивы в контекстепеременных формы, но только одномерные:
<form action="array.php" method="post">
Name:<input type="text”
name="personal[name]"><br>
Email:<input type="text”
name="personal[email]"><br>
City: <br>
<select multiple name=“city[]”>
<option value="warthog">Oryol
<option value="guinness">Moscow
</select>
<input type="submit">
</form>
33. Изменение типа.
• В PHP тип переменной определяется поконтексту, в котором она используется. Если
присвоить строковое значение переменной
var, var становится строкой. Если затем
присвоить переменной var значение целого
числа, то она станет целым.
• Примером автоматического преобразования
типа в PHP может служить оператор сложения
'+'. Если какой-либо из операндов является
числом типа double, то все операнды
оцениваются как double и результат будет
иметь тип double. Иначе, эти операнды будут
интерпретированы как integer и результат
будет integer. Отметим, что при этом НЕ
меняются типы операндов, меняется их
оценка.
34. Изменение типа.
• Примеры:$foo = "0"; // $foo - строка (ASCII 48)
$foo++; // $foo - строка "1" (ASCII 49)
$foo += 1;
// $foo является целым (2)
$foo = $foo + 1.3;//$foo - double (3.3)
$foo = 5 + "10 Little Piggies";
// $foo является целым (15)
$foo = 5 + "10 Small Pigs";
// $foo является целым (15)
• Если вы желаете изменить тип переменной,
используйте settype().
35. Определение типов переменных.
• ПосколькуPHP
определяет
типы
переменных и преобразует их (в общем)
по мере необходимости, не всегда
очевидно какой тип данная переменная
имеет в какой-то отдельный момент.
Поэтому
PHP
включает
несколько
функций, которые позволяют определить
текущий тип переменной. Это функции
gettype(), is_long(), is_double(), is_string(),
is_array(), и is_object().
36. Приведение типа.
• Приведение типа работает в PHP во многом так же как в C:название требуемого типа записывается в круглых скобках
перед переменной, которая должна быть приведена к
данному типу.
$foo = 10;
// $foo is an integer
$bar = (double) $foo;// $bar - double
• Допускается следующее приведение типов:
– (int), (integer) - приведение к целому
– (real), (double), (float) - приведение к типу double
– (string) - приведение к строке
– (array) - приведение к массиву
– (object) - приведение к объектной переменной.
37. Манипуляции с массивом.
• PHP поддерживает как скалярные, так иассоциативные массивы. Вы можете создать
массив, используя функции list() или array(), или
можно явно задать значение каждого элемента
массива.
$a[0] = "abc";
$a[1] = "def";
$b["foo"] = 13;
• Можно также создать массив просто добавляя в
него значения.
$a[] = "hello"; // $a[2] == "hello"
$a[] = "world"; // $a[3] == "world"
38. Манипуляции с массивом.
• Массив может сортироваться функциямиasort(), arsort(), ksort(), rsort(), sort(),
uasort(), usort(), и uksort() в зависимости от
типа желаемой сортировки. Подсчет
количества
элементов
массива
осуществляется
функцией
count().
Перемещаться по массиву позволяют
функции next() и prev(). Другим типовым
способом перемещения по массиву
является использование функции each()
или конструкции foreach().
39.
Создание массивов в PHPМассив - это набор данных, которые объединены
под одним именем. Массив состоит из нескольких
элементов, которые имеют свой определенный
индекс.
Массивы создаются при помощи
оператора присвоения, также, как и переменная.
Имена массивов начинаются со знака $, после
которого следует произвольный идентификатор,
далее идут квадратные скобки: $arr[0] = "php";
Данная конструкция создает массив и
присваивает его элементу с индексом 0 значение
"php", после чего мы можем обращаться к этому
элементу как к обычной переменной: echo $arr[0].
В результате мы увидим слово php.
Также, мы можем добавить еще элементы к
массиву:
<?php $arr[1] = "html"; $arr[2] = "css"; ?>
40.
В качестве индекса элементов массива мы можемиспользовать не только числа:
<?php
$arr["Kiev"] = 3000000;
$arr["Paris"] = 5000000;
$arr["LA"] = 15000000;
?>
В качестве значений индексов элементов и самих
элементов мы можем использовать одинаковые
типы данных одновременно!
Также существует сокращенная запись для
индексирования:
<?php
$arr[] = 3000000; $arr[] = 5000000; $arr[] =
15000000;
?>
В этом случае первый элемент (3000000) получит
индекс 0! Нужно иметь это ввиду.
41.
Для создания массива можно использоватьфункцию array:
<?php
$arr = array("php", "html", "css");
?>
В этом случае первый элемент получит индекс 0. Если
нужно присвоить какой-то другой номер, то можно
воспользоваться конструкцией =>:
<?php
$arr = array(1 => "php", "html", "css"); ?>
Теперь элемент под номером 1 это "php", а не "html"!
Также, можно создать массив со строковым индексом:
<?php
$arr = array("first" => "php", "second" => "html", "third"
=> "css"); ?>
Начиная с версии PHP 5.4, массивы можно создать
через квадратные скобки:
<?php $arr = ["php", "laravel", "yii", "zend", "cakephp"]; ?
42.
Модификация элементов массивав PHP
Есть массив:
<?php
$arr[0] = "PHP";
$arr[1] = "HTML";
$arr[2] = "CSS";
?>
Для того, чтобы изменить значение элемента
используем оператор присвоения:
<?php
$arr[1] = "JAVASCRIPT";
?>
43.
Для того, чтобы добавить новый элемент в конецмассива использует конструкцию:
<?php
$arr[] = "JQUERY";
?>
Для того, чтобы вывести на экран массив можно
использовать foreach:
<?php
$arr[0] = "PHP"; $arr[1] = "HTML"; $arr[2] = "CSS";
$arr[1] = "JAVASCRIPT"; $arr[] = "JQUERY";
foreach($arr as $key => $value) { // при переборе:
$key - индекс элемента массива, $value значение элемента массива
echo $value.'<br/>'; } ?>
Отображение в браузере:
PHP
JAVASCRIPT
CSS
JQUERY
44.
Удаление элементов массива в PHPЕсли нам нужно удалить один из элементов
массива, то для этого мы должны использовать
функцию unset
<?php
$arr[0] = "PHP"; $arr[1] = "HTML"; $arr[2] = "CSS";
unset($arr[1]);
foreach($arr as $key => $value)
{ echo $value.'<br/>'; }
?>
45.
Перебор элементов массива в PHPКроме использования цикла for для вывода
всех элементов массива на экран мы
можем использовать функцию print_r,
которая выведет все элементы массива
вместе с их индексами.
<?php
$arr[0] = "PHP"; $arr[1] = "HTML"; $arr[2] =
"CSS"; print_r($arr);
?>
Отображение в браузере:
Array ( [0] => PHP [1] => HTML [2] => CSS )
46.
Также в PHP присутствует специальный цикл дляобработки массивов - цикл foreach
<?php
$arr[0] = "PHP"; $arr[1] = "HTML"; $arr[2] = "CSS";
foreach($arr as $value)
{
echo $value, "<br>";
}
?>
Отображение в браузере:
PHP
HTML
CSS
47.
Для вывода индекса элемента нужноиспользовать второй вариант синтаксиса
цикла foreach
<?php
$arr[0] = "PHP"; $arr[1] = "HTML"; $arr[2] = "CSS";
foreach($arr as $key => $value)
{
// $key - индекс эл.массива, $value - значение
эл.массива echo "[{$key}] => {$value} <br/>";
}
?>
Отображение в браузере:
[0] => PHP
[1] => HTML
[2] => CSS
48.
Сортировка массивов в PHPОчень часто нужно отсортировать массив по индексу его
элементов, по алфавиту его элементов, по возрастанию,
по убыванию и т. д. В PHP для этого существуют
Функция - sort, которая сортирует массив по возрастанию
функции.
значений его элементов, при этом изменяя индекс после
сортировки:
<?php
$arr[0] = "PHP"; $arr[1] = "HTML"; $arr[2] = "CSS";
sort($arr);
print_r($arr);
?>
Отображение в браузере:
Array ( [0] => CSS [1] => HTML
[2] => PHP )
49.
Функция - rsort, которая сортирует массив поубыванию значений его элементов, при этом
изменяя индекс после сортировки:
<?php
$arr[0] = "PHP"; $arr[1] = "HTML"; $arr[2] = "CSS";
rsort($arr);
print_r($arr);
?>
Отображение в браузере:
Array ( [0] => PHP [1] => HTML [2] => CSS )
50.
Третья функция - ksort, которая сортирует массив поключам, сохраняя отношения между ключами и
значениями:
<?php
$arr[0] = "PHP"; $arr[1] = "HTML"; $arr[2] = "CSS";
ksort($arr);
print_r($arr); ?>
Отображение в браузере:
Array ( [0] => PHP [1] => HTML [2] => CSS )
51.
Функция - krsort, которая сортирует массив поубыванию индексов его элементов:
<?php
$arr[0] = "PHP"; $arr[1] = "HTML"; $arr[2] =
"CSS";
krsort($arr);
print_r($arr);
?>
Отображение в браузере:
Array ( [2] => CSS [1] => HTML
[0] => PHP )
52.
Навигация по массива дает возможно узнатьтекущий , следующий, предыдущий, последний
элемента массива.
Навигация по массивам в PHP
Текущий элемент массива определяет
функция current:
<?php echo "Now is: ", current($arr), "<br>"; ?>
Следующий элемент массива определяет
функция next:
<?php echo "Next is: ", next($arr), "<br>"; ?>
Предыдущий элемент массива определяет
функция prev:
<?php echo "Previously is: ", prev($arr), "<br>"; ?>
Последний элемент массива определяет
функция end:
<?php echo "The end is: ", end($arr), "<br>"; ?>
Для определения первого (возврата указателя)
53.
Пример навигации по массивам:<?php $arr[0] = "PHP"; $arr[1] = "HTML"; $arr[2] =
"CSS";
echo "Тек_элемент: ", current($arr), "<br>";
echo "След_элемент: ", next($arr), "<br>";
echo "Предыдущ_элемент: ", prev($arr), "<br>";
echo "Последний_элемент: ", end($arr), "<br>";
echo "Первый_элемент: ", reset($arr), "<br>";
?>
Отображение в браузере:
Тек_элемент: PHP
След_элемент: HTML
Предыдущ_элемент: PHP
Последний_элемент: CSS
Первый_элемент: PHP
54.
Преобразование строк в массивы инаоборот
PHP умеет преобразовывать данные из строки в
массив и наоборот, для этого в PHP есть
функция implode и explode.
implode - формирует строку из массива.
explode - формирует массив из строки.
Использование функции implode:
<?php
$arr[0] = "PHP"; $arr[1] = "HTML"; $arr[2] = "CSS";
$string = implode(", ", $arr);
echo $string;
?>
Отображение в браузере:
PHP, HTML, CSS
55.
Использование функции explode:<?php
$string = "PHP, HTML, CSS";
$arr = explode(", ", $string);
print_r($arr);
?>
Отображение в браузере:
Array ( [0] => PHP [1] => HTML [2] => CSS )