- •Государственное образовательное учреждение высшего профессионального образования Волго-Вятская академия государственной службы
- •Разработка Web-приложений
- •Часть 2. Основы php – основного языка создания Web - приложений
- •Оглавление
- •Глава 1. Основы языка php 7
- •Глава 2. Синтаксис и семантика операторов php 58
- •Глава 3. Массивы 103
- •Глава 4. Функции 141
- •Глава 5. Работа с файлами 198
- •Глава 6. Вопросы и задания 271
- •Глава 1.Основы языка php
- •1.1.Замечания о некоторых особенностях языка и среды его выполнения
- •1.2. Как работает обработчик кода php
- •1.3. Синтаксис php – начальные сведения
- •1.3.1. Как интерпретатор распознаёт (различает) код php
- •1.3.2. Синтаксис php разрешает совместное и раздельное использование кода php и html
- •Пример 1‑1
- •1.3.3. Другие особенности синтаксиса php начального уровня
- •Пример 1‑2
- •Наиболее часто применяемые символы управляющих последовательностей
- •1.4. Синтаксис php –типы данных, строки, переменные, константы, функции и выражения
- •1.4.1. Основы понятия «типы данных». Классификация данных в php
- •Скалярных типов (всего четыре):
- •Смешанных типов (всего 2):
- •Специальных типов (всего 2):
- •1.4.2. Интервалы значений числовых данных в php
- •1.4.2.1. Целые числа
- •1.4.2.2.Вещественные (с плавающей точкой) числа
- •1.4.3. Элементы языка, которые «держат» данные. Их синтаксис
- •1.4.3.1. Постановка задачи
- •1.4.3.2. Строки
- •Пример 1‑3
- •Пример 1‑4
- •1.4.3.3. Переменные
- •Пример 1‑5
- •Пример 1‑6
- •Пример 1‑7
- •1.4.3.4. Константы
- •Пример 1‑8
- •1.4.3.5. Функции в php – введение в тему
- •Пример 1‑9 – обобщённая схема определения функции
- •Пример 1‑10
- •1.4.3.6. Функции php по работе с данными
- •Пример 1‑11
- •Пример 1‑12
- •Пример 1‑13
- •Пример 1‑14
- •Пример 1‑15
- •1.4.3.7. Функции php по работе со строками
- •Пример 1‑16
- •Пример 1‑17
- •Пример 1‑18
- •Пример 1‑19
- •1.4.3.8. Понятие «выражение» в php
- •1.4.3.9. Манипуляции с типами
- •Глава 2. Синтаксис и семантика операторов php
- •2.1. Классификация операторов php и порядок их выполнения
- •О ператоры php в порядке убывания приоритета
- •2.2. Математические операторы
- •2.2.1. Арифметические операции
- •Арифметические операторы php
- •Пример 2‑20
- •2.2.2. Математические функции
- •2.2.3. Операторы присваивания
- •Пример 2‑21
- •2.2.4. Операторы инкремента (увеличения) и декремента (уменьшения)
- •Пример 2‑22
- •2.2.5. Строковые операторы
- •Пример 2‑23
- •2.2.6. Побитовые операторы
- •Пример 2‑24
- •Побитовые операторы php
- •2.2.7. Класс логических операторов
- •2.2.8. Операторы (конструкции) управления выполнением скрипта
- •2.2.8.1. Операторы условного перехода
- •If ( условие )
- •Пример 2‑25
- •2.2.8.2. Расширение оператора if - оператор elseif
- •If (выражение) блок_выполнения
- •Пример 2‑26
- •Пример 2‑27
- •Оператор переключения "switch" ("выбор")
- •Пример 2‑28
- •2.2.9. Операторы цикла
- •2.2.9.1. Простейший оператор цикла – цикл с предусловием - оператор while
- •While (выражение) {блок_выполнения}20
- •While (выражение): блок_выполнения endwhile;
- •Пример 2‑29
- •2.2.9.2. Цикл с постусловием - оператор do while
- •2.2.9.3. Циклы for
- •Пример 2‑30
- •Пример 2‑31
- •Пример 2‑32
- •2.2.9.4. Частные случаи использования цикла for в php
- •Пример 2‑33
- •Пример 2‑34
- •Пример 2‑35
- •Пример 2‑36
- •2.2.9.5. Об альтернативном синтаксисе операторов цикла
- •Глава 3. Массивы
- •3.1. Общие вопросы использования массивов в php: определение, типы, использование в выражениях и размерность
- •3.2. Создание массивов и особенности их использования в php
- •Пример 3‑37
- •Пример 3‑38
- •3.3. Операции с массивами
- •3.3.1. Вывод элементов массива на экран
- •Пример 3‑39
- •3.3.2. Изменение, перебор элементов и удаление элементов массива
- •Пример 3‑40
- •Пример 3‑41
- •3.3.3. Сортировка массива
- •Пример 3‑42 - сортировка массивов
- •Array(день1,день3, день11, день111);
- •Array(5,1,3,день1,день5,день3,day1,"яблоко","груша","apple")
- •3.3.4. Преобразование строк в массивы и наоборот
- •Пример 3‑43
- •3.3.5. Примеры специальных функций обработки массивов
- •Extract (имя_массива)
- •Пример 3‑44 - использование array_merge() с параметрами разных типов в php 5
- •Пример 3‑45 – обработка массивов
- •3.3.6. Функции по работе с массивами для самостоятельного изучения
- •3.4. Многомерные массивы
- •3.4.1. Введение
- •Пример 3‑46
- •3.4.2. Создание многомерных массивов
- •Пример 3‑47
- •Пример 3‑48
- •3.4.3. Ссылки на элементы многомерных массивов
- •3.4.4. Перебор элементов многомерных массивов
- •Пример 3‑49
- •3.4.5. Операторы над массивами
- •Операторы над массивами
- •Пример 3‑50
- •Глава 4.Функции
- •4.1. Введение
- •4.2.Создание, подключение и использование собственных функций в php
- •4.2.1. Синтаксис описания функции
- •4.2.2. Описание работы функции навигации по страницам сайта
- •4.2.3. Архитектура проекта, иллюстрирующего работу функции
- •Пример 4-1 - код «простого» решения
- •Пример 4‑2 - текст файла index.Php
- •4.3. Передача данных в функцию
- •4.3.1. Передача в функцию списка простых данных
- •Пример 4‑6
- •Пример 4‑7
- •4.3.2. Передача массивов в функцию
- •Пример 4‑8
- •Пример 4‑9
- •4.3.3. Функции с переменным числом аргументов
- •Пример 4‑10
- •4.3.4. Два способа передачи аргументов в функцию
- •4.3.5. Ссылка в php
- •4.3.6. Передача аргументов в функцию по ссылке
- •Пример 4‑11
- •4.4. Организация возврата значений из функции в вызывающий её скрипт
- •4.4.1. Функции, возвращающие единичные (скалярные) значения
- •Пример 4‑12
- •Пример 4‑13
- •4.4.2. Функция, возвращающая массив. Использование списков
- •Пример 4‑14
- •4.4.3. Функция, возвращающая ссылки
- •Пример 4‑15
- •4.5. Типизация переменных в php по их «области действия», «видимости» и «времени жизни». Глобальные, суперглобальные и статические переменные
- •4.5.1. Общие положения
- •Пример 4‑16
- •4.5.2. Предопределённые переменные и суперглобальные массивы
- •Пример 4‑17
- •4.5.3. Статические переменные
- •Пример 4‑18
- •4.6. Дополнительные возможности работы с функциями в php
- •4.6.1 Переменные, ссылающиеся на функции
- •Пример 4‑19
- •4.6.2. Условное (динамическое) описание функций
- •Пример 4‑20
- •4.6.3. Вложенные функции и вложенные файлы
- •Где хранить эти файлы?
- •Какую команду надо использовать, чтобы вставлять файл в нужное место?
- •Какими должны быть синтаксис и расширение таких файлов?
- •Пример 4‑511
- •4.6.4. Обработка ошибок в функциях пользователя
- •Пример 4‑22
- •4.7. Рекурсивное использование функций
- •4.7.1. Рекурсивные и итеративные функции – в чём разница, недостатки и преимущества
- •Пример 4‑23
- •4.8. Основные итоги по теме «Функции»
- •Глава 5.Работа с файлами
- •5.1. Возможности работы с файлами в php
- •5.1.1. Введение
- •5.1.2. Понятия и термины, связанные с понятием «файл»
- •5.1.2.1. Понятие файла и файловой системы
- •Свойства файла
- •Операции и сущности, связанные с файлами
- •Бинарные (двоичные) и текстовые файлы
- •5.2. Функция открытия файла - базовая функция при работе с файлам. Особенности обращения к файлам
- •5.2.1. Синтаксис функции открытия файла
- •Пример 5‑52
- •5.2.2. Абсолютные и относительные пути (дорожки) до файла
- •5.2.3. Понятие унифицированного (единообразного) идентификатора ресурса - uri
- •5.2.4. Уточнение возможных ссылок на файлы и особенности работы с ними
- •Пример 5‑53
- •Пример 5‑54
- •Перечень некоторых предопределённых констант php
- •5.3. Примеры использования других функций для работы с файлами
- •5.3.1. Проверка существования файла
- •5.3.2. Проверка существования и размера файла
- •Int filesize(string имя_файла)
- •5.3.3. Закрытие файла после завершения работы с ним
- •Int fclose(int дескриптор файла)
- •5.3.4. Основные операции с открытыми файлами
- •5.3.4.1. Запись в файл
- •Int fwrite(int дескриптор, string stroka[, int длина])
- •5.3.4.2. Запись файла целиком
- •Пример 5‑55
- •5.3.4.3. Чтение из файла
- •Пример 5‑56
- •5.3.5. Специальные случаи чтения файлов
- •5.3.5.1. Чтение строк текста: функция fgets( )
- •5.3.5.2. Чтение строк текста c отбрасыванием html тегов: функция fgetss( )
- •5.3.5.3. Посимвольное чтение файла: функция fgetс( )
- •Пример 5‑57
- •5.3.5.4. Чтение файла в индексированный массив: функция file()
- •5.3.5.5. Чтение файла целиком в строку: функция file_get_contents()
- •5.3.5.6. Чтение файла с его синтаксическим разбором: функция fscanf()
- •Пример 5‑58
- •5.4. Функции для операций над каталогами
- •Перечень функций по работе с каталогами
- •5.4.1. Получение дорожки до текущего скрипта и его имени
- •5.4.2. Чтение всего содержимого каталога
- •Пример 5‑8
- •5.4.3. Печать дерева каталогов
- •Визуальное отображение дерева каталогов для текущего каталога ТекКат
- •Пример 5‑9
- •5.5. Общая классификация функций php по работе с файловой системой
- •Категории функций php по работе с файловой системой
- •5.6. Права пользователей по доступу к файлам
- •5.6.1. Определение прав доступа
- •5.6.2. Описание прав доступа в системе unix и их реализация
- •Пример записи прав доступа к файлу для разных групп пользователей
- •B. Матричный вид
- •5.6.3. Особенности управления доступом к файлу в php
- •Глава 6.Вопросы и задания
- •6.1. Вопросы и задания к главе 1(Основы языка php)
- •6.1.1.Контрольные вопросы к главе 1
- •6.1.2. Задания к главе 1
- •6.2. Вопросы и задания к главе 2 (Синтаксис и семантика операторов php)
- •6.2.1.Контрольные вопросы к главе 2
- •6.2.2. Задания к главе 2
- •6.3. Вопросы и задания к главе 3 (Массивы)
- •6.3.1.Контрольные вопросы к главе 3
- •6.3.2. Задания к главе 3
- •6.4. Вопросы и задания к главе 4(Функции)
- •6.4.1.Контрольные вопросы к главе 4
- •6.4.2. Задания к главе 4
- •6.5. Вопросы и задания к главе 5(Работа с файлами)
- •6.5.1.Контрольные вопросы к главе 5
- •6.5.2. Задания к главе 5
- •Рекомендованные для работы с пособием источники
- •32 Монтирование файловой системы — процесс, подготавливающий раздел диска к использованию операционной системой.
Пример 5‑54
<?php
1. echo "Путь до корневой папки веб-сервера = ";
2. echo $_SERVER['DOCUMENT_ROOT'],"<br>";
3. $a=__FILE__;//Переменная $a получает значение текущего каталога
4. echo "a = ",$a, "<br>";
5. $descript1=fopen("D:/FilesForPHP/file1.txt", "ab");//Открытие файла
6. if(!$descript1) exit ("Ошибка 1-го открытия файла");
7. echo "descript1= ", $descript1, "<br>";
8. $descript2=fopen("../../../FilesForPHP/file1.txt", "ab");
9. if(!$descript2) exit ("Ошибка 2-го открытия файла");
10. echo "descript2 = ", $descript2, "<br>";
11. $primerstring ='Stroka';
12. echo "строка = ", $primerstring, "<br>";
14. $kolbyte= fwrite($descript1, $string);
//$kolbyte= fwrite($descript1, $primerstring, 4);
15. echo "kolbyte = ", $kolbyte;
16. fclose($descript1);//закрытие файла
17. fclose($descript2);//закрытие файла
18. $descript3=fopen("D:/FilesForPHP/file2.txt", "ab");//Открытие файла
19. if(!$descript3) exit ("Ошибка 3-го открытия файла");
20. echo "descript3 = ", $descript3, "<br>";
21. fclose($descript3);//закрытие файла
?>
В этом примере специально пронумерованы строки для того, чтобы удобней было провести анализ.
В строках 1-2 организована печать упомянутого выше элемента индексированного массива $_SERVER с индексом 'DOCUMENT_ROOT'.
Строки 3-4 показывают, что значения пути до нужного файла сохраняются не только в рассмотренном выше массиве, но и в так называемых стандартных константах47 PHP, которые также являются предопределёнными и глобальными. В частности, для этого используется константа _FILE_.
Ниже в таблице Таблица 5 -14 приводятся и другие наиболее важные константы такого рода и их значение.
Таблица 5‑14
Перечень некоторых предопределённых констант php
Константа |
Значение |
_FILE_ |
Имя анализируемой в данный момент программы. Если используется внутри файла, включенного в программу с помощью include или require, возвращается имя включенного, а не родительского файла |
_LINE_ |
Номер текущей строки в анализируемом файле (не чувствительно к регистру). Если используется внутри включаемого файла, возвращается номер строки в этом файле |
PHP_VERSION |
Строковое представление текущей версии анализатора РНР |
PHP_OS |
Название операционной системы, в которой работает анализатор РНР. К числу возможных значений относятся, например: AIX, Darwin (MacOS), Linux, SunOS, WIN32, WINNT |
TRUE |
Обозначает истинное логическое значение (не чувствительно к регистру) |
FALSE |
Обозначает ложное логическое значение (не чувствительно к регистру) |
E_ERROR |
Обозначает ошибочное состояние, не связанное с ошибкой разбора программы, в котором не возможно автоматическое восстановление состояния |
E_WARN ING |
Обозначает состояние, при котором PHP-машина оповещается о наличии некоторой нештатной ситуации, которая позволяет продолжить выполнение программы. Такие ситуации обычно обрабатываются внутри самой программы |
E_PARSE |
Анализатор обнаружил синтаксические ошибки в файле программы. Восстановление невозможно |
E_NOTICE |
Произошло какое-то событие, которое может быть или не быть ошибкой. Выполнение программы продолжено. К числу событий этого класса относятся, например, использование строки, не закрытой кавычками, или попытка использования переменной, значение которой еще не установлено |
E_ALL |
Объединяет все константы семейства Е_*. При использовании совместно с функцией error_reporting() приведет к генерации сообщений о любых ошибках и предупреждениях РНР-машины |
Примечание:
Константы семейства Е_* обычно используются функцией error_reporting() для включения или отключения генерации сообщений об ошибках различных степеней важности.
Идём дальше.
В строке 5 осуществляется открытие созданного заранее текстового файла file1.txt. Это файл показан на Рис. 5 -16. Файл открывается на запись. Что означает параметр b, читатели должны вспомнить сами.
Рис. 5‑16. Файл, открываемый в скрипте Пример 5 -54
В результате нормального (безошибочного) открытия файла создаётся его дескриптор $descript1.
В строке 6 отработалась бы ошибка файла, если бы она была. Так как в данном случае её нет, в строке 7 производится вывод значения первого дескриптора нашего файла.
В строках 8-10 показывается, что файл можно открывать несколько раз (в данном случае – второй), и при этом можно создавать ему новый дескриптор.
Далее приводятся примеры использования некоторых других функций.
Строки 11-15 объясняют, как работает функция fwrite().
Синтаксис этой функции выглядит так:
int fwrite ( resource handle, string stroka [, int length] )
Эта функция записывает содержимое строки stroka в файловый поток handle (напомним, что в качестве первого параметра handle, тип которого – resource, выступает дескриптор файла или, как ещё говорят, файлового потока).
Если передан аргумент length, запись остановится после того, как length байтов будут записаны или будет достигнут конец строки string, в зависимости оттого, что произойдёт первым. Эта функция возвращает количество записанных байтов или FALSE в случае ошибки.
Результат работы строки 14 представлен на рисунке Рис. 5-4.
Рис. 5‑17. Файл file1.txt после дозаписи в него строки Stroka
После строки 14 идёт закомментированная строка с использованием третьего необязательного параметра функции fwrite( ). Читателям предлагается самим определить, что отобразиться в браузере и каким будет результирующий файл при выполнении скрипта, в котором она будет разкомментирована.
В строках 15, 16 происходит закрытие файла (или файловых потока), а в строке 18 происходит открытие несуществующего файла. При этом создаётся и открывается пустой файл. Проверить, так ли это, читатель должен самостоятельно.
Строки 20 и 21 в комментариях не нуждаются.