Введение в PHP. Синтаксисkulakov/courses/php/lectures/1... · 2017-02-07 ·...
Transcript of Введение в PHP. Синтаксисkulakov/courses/php/lectures/1... · 2017-02-07 ·...
ПетрГУ, 2016 1
Web-технологии
Введение в PHP. Синтаксис
Кулаков Кирилл Александрович
ПетрГУ, 2016 2
Информация о курсе
● Продолжительность
– 30 часов лекций
– 15 часов лабораторных работ● Контроль успеваемости
– лабораторные работы (до 8 б./1 ед.)
– экзамен (устный)● Помощь
– Сайт курса (http://cs.karelia.ru/~kulakov/courses/php )
– График консультаций кафедры ИМО
– Электронная почта ([email protected])
ПетрГУ, 2016 3
Техническая база
● Студенческий сервер kappa (kappa.cs.petrsu.ru)
– PuTTY 0.67 (http://www.chiark.greenend.org.uk/~sgtatham/putty/)
● Web-сервер Apache (http://httpd.apache.org/)
● Интерпретатор PHP 5.5.14, 7? (http://www.php.net/)
● Система управления базами данных MySQL (http://dev.mysql.com/)
ПетрГУ, 2016 4
Что такое PHP
● PHP: Препроцессор Гипертекста (Hypertext Preprocessor)
– интерпретируемый язык
– открытый исходный код
– цель: быстрое создание динамически генерируемых web-страниц
● Работа в режиме клиент-сервера CGI (parser + web-server + browser)
● Работа в режиме командной строки CLI (parser + console)
● Работа в графическом режиме GUI (parser + GTK/Qt)
ПетрГУ, 2016 5
Популярность языков программирования (http://w3techs.com/)
ПетрГУ, 2016 6
Справочная информация
ОСНОВНОЕ РУКОВОДСТВО ПРОГРАММИСТА
http://www.php.net/manual/en/
описания, примеры, комментарии
ПетрГУ, 2016 7
Версии PHP
● 1994 год — набор Perl/CGI скриптов "Personal Home Page"
● 1995 год — PHP/FI 2.0 Первый публичный релиз
● 1998 год — PHP 3.0 Переработанный код интерпретатора, модульность
● 1999 год — PHP 4.0 Использование Zend Engine, быстродействие, расширение модульности
● 2004 год — PHP 5.0 Быстродействие, XML, ООП
● 2006 год — PHP 6.0 Unicode (НЕ ВЫШЛА)
● 2015 год — PHP 7 Производительность, контроль работы
ПетрГУ, 2016 8
Режимы работы PHP приложений
● Консольные приложения (CLI, GUI)
– Задание опций при вызове
– Запрет некоторых директив, ненужных для работы в командной строке
● наример, ошибки html (директива html_errors)– Наличие констант STDIN, STDOUT, STDERR
– Не используется разметка html
– Наличие аргументов командной строки ($argc, $argv)
– Контроль за значением кода возврата
ПетрГУ, 2016 9
Режимы работы PHP приложений
$argv – массив с аргументами, переданными скрипту
Количество передаваемых аргументов не ограничено
$argv[0] – имя скрипта или "–" в случае если
● php-код читается из потока STDIN (например, в конвейере)
● используется ключ -r
$argc - количество элементов массива $argv
!не количество аргументов, передаваемых при запуске!
Если аргумент начинается с символа –
● необходимо использовать -- в качестве разделителя списка аргументов
ПетрГУ, 2016 10
Режимы работы PHP приложений
ПетрГУ, 2016 11
Основы синтаксиса
● Консольное приложение
<?php начало блока php-инструкций
echo “Hello, World! \n”; #вывод строки на экран
?> конец блока php-инструкций
● Web-приложение
<html>
<head><title>PHP-сценарий</title></head>
<body>
<?php
echo “Hello, World! \n”;
?>
</body>
</html>
Обработка интерпретатором PHP}
ПетрГУ, 2016 12
Типы данных
● Скалярные типы данных
– Целые числа: 1234, -123, 0777, 0xFF
– Логический тип: true, false
– Вещественные числа: 1.234, 2.7E-10
– Строки:● "Разбираемая строка\n"● 'Неразбираемая строка'● $str = <<<EOD
Пример строки, охватывающей несколько строчек,
с использованием heredoc-синтаксиса
EOD;● ! все числа знаковые,
● ! нет оператора деления целых, var_dump((int) (25/7)) # int(3),
● ! для работы с бинарными данными см. pack()
● gettype() - тип данных
ПетрГУ, 2016 13
Типы данных
● Смешанные типы данных
– Массивы (индексные, ассоциативные)
– Объекты● Специальные типы данных
– ресурсы – ссылка на внешний ресурс (curl, mysql result ), создаются и используются специальными функциями
– пустой тип (NULL) – переменная имеет значение null, если она еще не инициализирована или уже удалена с помощью unset()
● is_null() – проверка на null
ПетрГУ, 2016 14
Переменные
● Переменная - это область оперативной памяти, доступ к которой осуществляется по имени
– Все данные, с которыми работает программа, хранятся в виде переменных
– Понятия указатель как в Си не существует
– Имена всех переменных должны начинаться со знака $, регистр имеет значение
– Переменные не нужно ни описывать явно, ни указывать их тип
– Существует явное приведение к типу (string), (int), (float), (boolean), (array), (object)
– settype() – установить тип переменной
– var_dump() – информация о переменной
ПетрГУ, 2016 15
Константы
● Константы используются для хранения данных, которые не изменяются во время работы скрипта (пароли, математические константы, пути к файлам, и т.д.)
● Определение константы
define (′′name′′, $value, $case_sen)
– name - имя константы;
– $value - значение константы;
– $case_sen – необязательные параметр, true - учитывать регистр букв, false – не учитывать
● Перед именем константы знак $ не ставится!!!
define("pi", 3.14, true);
echo pi;● defined() – проверка существования константы
ПетрГУ, 2016 16
Предопределенные константы
● Предопределенные константы, которые меняют свое значение в зависимости от контекста (magic constants):
ИМЯ ОПИСАНИЕ
__LINE__ Текущая строка в файле.
__FILE__ Полный путь и имя текущего файла (или -)
__DIR__ Директория файла (dirname(__FILE__))
__FUNCTION__ Имя функции (или пустая строка)
__CLASS__ Имя класса (или пустая строка)
__METHOD__ Имя метода класса (или пустая строка)
ПетрГУ, 2016 17
Ссылки
● Жесткая ссылка – это переменная-синоним
● $b = &$a; # $b — то же самое, что и $a
● $A=array('a' => 'aaa', 'b' => 'bbb');
● $b=&$A['b']; # теперь $b элемент массива A с индексом 'b'
● $b=0; # $A['b']=0;
● Символическая ссылка – это строковая переменная, хранящая имя другой переменной
● $a=10;
● $p="a"; # p содержит имя переменной $a
● echo $$p; # вывод значения $a
● $$p=100; # присвоить $a значение 100
ПетрГУ, 2016 18
Операторы
● Список операторов в PHP
http://www.php.net/manual/en/language.operators.php● Операторы сравнения
– Тождественное сравнение: $a === $b – true, если $a и $b равны и одного типа (аналогично !==)
– PHP7: $a <=> $b - Число типа integer меньше, больше или равное нулю
– PHP7: Оператор null coalescing: (expr1) ?? (expr2): expr2, если expr1 равен NULL, или expr1
● Оператор исполнения
$list = `ls -al`;● Строковые операторы
– '.' – конкатенация
– '.=' – присвоение с конкатенацией
ПетрГУ, 2016 19
Ветвление (if)
if (логическое_выражение_1) {
блок_операторов_1;
} elseif (логическое_выражение_2) {
блок_операторов_2;
} else {
блок_операторов_3;
}
ПетрГУ, 2016 20
Ветвление switch-case
switch (выражение) {
case значение1: команды1; [break;]
case значение2: команды2; [break;]
. . .
case значениеN: командыN; [break;]
[default: команды_по_умолчанию; [break]]
}
ПетрГУ, 2016 21
Организация циклов
● Цикл с предусловием - while
while (логическое_выражение) {
блок_операторов;
}
● Альтернативный вариант
while (логическое_выражение):
инструкция;
...
endwhile;
ПетрГУ, 2016 22
Организация циклов
● Цикл с постусловием – do-while
do
{
тело_цикла;
}
while (логическое_выражение);
ПетрГУ, 2016 23
Организация циклов (for)
● Цикл for
for (инициализирующие_команды; условие_цикла; команды_после_итерации)
{ тело_цикла; }
● Альтернативный вариант
for (инициализирующие_команды; условие_цикла; команды_после_итерации):
операторы;
endfor;
● foreach - Цикл перебора массивов
ПетрГУ, 2016 24
Передача управления
● Немедленный выход из цикла
break;
break(количество вложенных циклов);● Немедленное завершение текущей итерации цикла и
переход к новой
continue;
continue (количество вложенных циклов);
ПетрГУ, 2016 25
Безусловный переход (goto)
<?php
goto a;
echo 'Foo';
a:
echo 'Bar';
?>
ПетрГУ, 2016 26
Демо
● define(CNT,"a"); echo CNT; echo $CNT; echo cnt;
● echo "\n"; echo '\n';
● $var = "5"; echo gettype($var);
● $var = (int)$var; echo (gettype($var));
● $b = $a = 24;
● $result=$Count=="20"?"Достаточно":"Продолжить";
● $a = 0xFF; echo $a; printf("%X\n", $a);
● $a=PHP_INT_MAX; echo var_dump($a);
● $a=PHP_INT_MAX+1; echo gettype($a);