26
ПетрГУ, 2016 1 Web-технологии Введение в PHP. Синтаксис Кулаков Кирилл Александрович

Введение в PHP. Синтаксисkulakov/courses/php/lectures/1... · 2017-02-07 · ПетрГУ, 2016 7 Версии PHP 1994 год — набор Perl/CGI скриптов

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Введение в PHP. Синтаксисkulakov/courses/php/lectures/1... · 2017-02-07 · ПетрГУ, 2016 7 Версии PHP 1994 год — набор Perl/CGI скриптов

ПетрГУ, 2016 1

Web-технологии

Введение в PHP. Синтаксис

Кулаков Кирилл Александрович

Page 2: Введение в PHP. Синтаксисkulakov/courses/php/lectures/1... · 2017-02-07 · ПетрГУ, 2016 7 Версии PHP 1994 год — набор Perl/CGI скриптов

ПетрГУ, 2016 2

Информация о курсе

● Продолжительность

– 30 часов лекций

– 15 часов лабораторных работ● Контроль успеваемости

– лабораторные работы (до 8 б./1 ед.)

– экзамен (устный)● Помощь

– Сайт курса (http://cs.karelia.ru/~kulakov/courses/php )

– График консультаций кафедры ИМО

– Электронная почта ([email protected])

Page 3: Введение в PHP. Синтаксисkulakov/courses/php/lectures/1... · 2017-02-07 · ПетрГУ, 2016 7 Версии PHP 1994 год — набор Perl/CGI скриптов

ПетрГУ, 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/)

Page 4: Введение в PHP. Синтаксисkulakov/courses/php/lectures/1... · 2017-02-07 · ПетрГУ, 2016 7 Версии PHP 1994 год — набор Perl/CGI скриптов

ПетрГУ, 2016 4

Что такое PHP

● PHP: Препроцессор Гипертекста (Hypertext Preprocessor)

– интерпретируемый язык

– открытый исходный код

– цель: быстрое создание динамически генерируемых web-страниц

● Работа в режиме клиент-сервера CGI (parser + web-server + browser)

● Работа в режиме командной строки CLI (parser + console)

● Работа в графическом режиме GUI (parser + GTK/Qt)

Page 5: Введение в PHP. Синтаксисkulakov/courses/php/lectures/1... · 2017-02-07 · ПетрГУ, 2016 7 Версии PHP 1994 год — набор Perl/CGI скриптов

ПетрГУ, 2016 5

Популярность языков программирования (http://w3techs.com/)

Page 6: Введение в PHP. Синтаксисkulakov/courses/php/lectures/1... · 2017-02-07 · ПетрГУ, 2016 7 Версии PHP 1994 год — набор Perl/CGI скриптов

ПетрГУ, 2016 6

Справочная информация

ОСНОВНОЕ РУКОВОДСТВО ПРОГРАММИСТА

http://www.php.net/manual/en/

описания, примеры, комментарии

Page 7: Введение в PHP. Синтаксисkulakov/courses/php/lectures/1... · 2017-02-07 · ПетрГУ, 2016 7 Версии PHP 1994 год — набор Perl/CGI скриптов

ПетрГУ, 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 Производительность, контроль работы

Page 8: Введение в PHP. Синтаксисkulakov/courses/php/lectures/1... · 2017-02-07 · ПетрГУ, 2016 7 Версии PHP 1994 год — набор Perl/CGI скриптов

ПетрГУ, 2016 8

Режимы работы PHP приложений

● Консольные приложения (CLI, GUI)

– Задание опций при вызове

– Запрет некоторых директив, ненужных для работы в командной строке

● наример, ошибки html (директива html_errors)– Наличие констант STDIN, STDOUT, STDERR

– Не используется разметка html

– Наличие аргументов командной строки ($argc, $argv)

– Контроль за значением кода возврата

Page 9: Введение в PHP. Синтаксисkulakov/courses/php/lectures/1... · 2017-02-07 · ПетрГУ, 2016 7 Версии PHP 1994 год — набор Perl/CGI скриптов

ПетрГУ, 2016 9

Режимы работы PHP приложений

$argv – массив с аргументами, переданными скрипту

Количество передаваемых аргументов не ограничено

$argv[0] – имя скрипта или "–" в случае если

● php-код читается из потока STDIN (например, в конвейере)

● используется ключ -r

$argc - количество элементов массива $argv

!не количество аргументов, передаваемых при запуске!

Если аргумент начинается с символа –

● необходимо использовать -- в качестве разделителя списка аргументов

Page 10: Введение в PHP. Синтаксисkulakov/courses/php/lectures/1... · 2017-02-07 · ПетрГУ, 2016 7 Версии PHP 1994 год — набор Perl/CGI скриптов

ПетрГУ, 2016 10

Режимы работы PHP приложений

Page 11: Введение в PHP. Синтаксисkulakov/courses/php/lectures/1... · 2017-02-07 · ПетрГУ, 2016 7 Версии PHP 1994 год — набор Perl/CGI скриптов

ПетрГУ, 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}

Page 12: Введение в PHP. Синтаксисkulakov/courses/php/lectures/1... · 2017-02-07 · ПетрГУ, 2016 7 Версии PHP 1994 год — набор Perl/CGI скриптов

ПетрГУ, 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() - тип данных

Page 13: Введение в PHP. Синтаксисkulakov/courses/php/lectures/1... · 2017-02-07 · ПетрГУ, 2016 7 Версии PHP 1994 год — набор Perl/CGI скриптов

ПетрГУ, 2016 13

Типы данных

● Смешанные типы данных

– Массивы (индексные, ассоциативные)

– Объекты● Специальные типы данных

– ресурсы – ссылка на внешний ресурс (curl, mysql result ), создаются и используются специальными функциями

– пустой тип (NULL) – переменная имеет значение null, если она еще не инициализирована или уже удалена с помощью unset()

● is_null() – проверка на null

Page 14: Введение в PHP. Синтаксисkulakov/courses/php/lectures/1... · 2017-02-07 · ПетрГУ, 2016 7 Версии PHP 1994 год — набор Perl/CGI скриптов

ПетрГУ, 2016 14

Переменные

● Переменная - это область оперативной памяти, доступ к которой осуществляется по имени

– Все данные, с которыми работает программа, хранятся в виде переменных

– Понятия указатель как в Си не существует

– Имена всех переменных должны начинаться со знака $, регистр имеет значение

– Переменные не нужно ни описывать явно, ни указывать их тип

– Существует явное приведение к типу (string), (int), (float), (boolean), (array), (object)

– settype() – установить тип переменной

– var_dump() – информация о переменной

Page 15: Введение в PHP. Синтаксисkulakov/courses/php/lectures/1... · 2017-02-07 · ПетрГУ, 2016 7 Версии PHP 1994 год — набор Perl/CGI скриптов

ПетрГУ, 2016 15

Константы

● Константы используются для хранения данных, которые не изменяются во время работы скрипта (пароли, математические константы, пути к файлам, и т.д.)

● Определение константы

define (′′name′′, $value, $case_sen)

– name - имя константы;

– $value - значение константы;

– $case_sen – необязательные параметр, true - учитывать регистр букв, false – не учитывать

● Перед именем константы знак $ не ставится!!!

define("pi", 3.14, true);

echo pi;● defined() – проверка существования константы

Page 16: Введение в PHP. Синтаксисkulakov/courses/php/lectures/1... · 2017-02-07 · ПетрГУ, 2016 7 Версии PHP 1994 год — набор Perl/CGI скриптов

ПетрГУ, 2016 16

Предопределенные константы

● Предопределенные константы, которые меняют свое значение в зависимости от контекста (magic constants):

ИМЯ ОПИСАНИЕ

__LINE__ Текущая строка в файле.

__FILE__ Полный путь и имя текущего файла (или -)

__DIR__ Директория файла (dirname(__FILE__))

__FUNCTION__ Имя функции (или пустая строка)

__CLASS__ Имя класса (или пустая строка)

__METHOD__ Имя метода класса (или пустая строка)

Page 17: Введение в PHP. Синтаксисkulakov/courses/php/lectures/1... · 2017-02-07 · ПетрГУ, 2016 7 Версии PHP 1994 год — набор Perl/CGI скриптов

ПетрГУ, 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

Page 18: Введение в PHP. Синтаксисkulakov/courses/php/lectures/1... · 2017-02-07 · ПетрГУ, 2016 7 Версии PHP 1994 год — набор Perl/CGI скриптов

ПетрГУ, 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`;● Строковые операторы

– '.' – конкатенация

– '.=' – присвоение с конкатенацией

Page 19: Введение в PHP. Синтаксисkulakov/courses/php/lectures/1... · 2017-02-07 · ПетрГУ, 2016 7 Версии PHP 1994 год — набор Perl/CGI скриптов

ПетрГУ, 2016 19

Ветвление (if)

if (логическое_выражение_1) {

блок_операторов_1;

} elseif (логическое_выражение_2) {

блок_операторов_2;

} else {

блок_операторов_3;

}

Page 20: Введение в PHP. Синтаксисkulakov/courses/php/lectures/1... · 2017-02-07 · ПетрГУ, 2016 7 Версии PHP 1994 год — набор Perl/CGI скриптов

ПетрГУ, 2016 20

Ветвление switch-case

switch (выражение) {

case значение1: команды1; [break;]

case значение2: команды2; [break;]

. . .

case значениеN: командыN; [break;]

[default: команды_по_умолчанию; [break]]

}

Page 21: Введение в PHP. Синтаксисkulakov/courses/php/lectures/1... · 2017-02-07 · ПетрГУ, 2016 7 Версии PHP 1994 год — набор Perl/CGI скриптов

ПетрГУ, 2016 21

Организация циклов

● Цикл с предусловием - while

while (логическое_выражение) {

блок_операторов;

}

● Альтернативный вариант

while (логическое_выражение):

инструкция;

...

endwhile;

Page 22: Введение в PHP. Синтаксисkulakov/courses/php/lectures/1... · 2017-02-07 · ПетрГУ, 2016 7 Версии PHP 1994 год — набор Perl/CGI скриптов

ПетрГУ, 2016 22

Организация циклов

● Цикл с постусловием – do-while

do

{

тело_цикла;

}

while (логическое_выражение);

Page 23: Введение в PHP. Синтаксисkulakov/courses/php/lectures/1... · 2017-02-07 · ПетрГУ, 2016 7 Версии PHP 1994 год — набор Perl/CGI скриптов

ПетрГУ, 2016 23

Организация циклов (for)

● Цикл for

for (инициализирующие_команды; условие_цикла; команды_после_итерации)

{ тело_цикла; }

● Альтернативный вариант

for (инициализирующие_команды; условие_цикла; команды_после_итерации):

операторы;

endfor;

● foreach - Цикл перебора массивов

Page 24: Введение в PHP. Синтаксисkulakov/courses/php/lectures/1... · 2017-02-07 · ПетрГУ, 2016 7 Версии PHP 1994 год — набор Perl/CGI скриптов

ПетрГУ, 2016 24

Передача управления

● Немедленный выход из цикла

break;

break(количество вложенных циклов);● Немедленное завершение текущей итерации цикла и

переход к новой

continue;

continue (количество вложенных циклов);

Page 25: Введение в PHP. Синтаксисkulakov/courses/php/lectures/1... · 2017-02-07 · ПетрГУ, 2016 7 Версии PHP 1994 год — набор Perl/CGI скриптов

ПетрГУ, 2016 25

Безусловный переход (goto)

<?php

goto a;

echo 'Foo';

a:

echo 'Bar';

?>

Page 26: Введение в PHP. Синтаксисkulakov/courses/php/lectures/1... · 2017-02-07 · ПетрГУ, 2016 7 Версии PHP 1994 год — набор Perl/CGI скриптов

ПетрГУ, 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);