КулЛиб электронная библиотека 

Создаем динамические веб-сайты на PHP [Питер Макинтайр] (pdf) читать онлайн

Книга в формате pdf! Изображения и текст могут не отображаться!


Настройки текста:



Beijing

Boston Farnham Sebastopol

Tokyo

Создаем динамические
веб-сайты на

PHP

4-е международное издание

Кевин Татро, Питер Макинтайр

2021

ББК 32.988.02-018
УДК 004.738.5
Т23

Татро Кевин, Макинтайр Питер
Т23

Создаем динамические веб-сайты на PHP. 4-е междунар. изд. — СПб.: Питер,
2021. — 544 с.: ил. — (Серия «Бестселлеры O’Reilly»).
ISBN 978-5-4461-1488-7

Сложно найти что-то толковое про PHP? Проверенная временем, обновленная в четвертом издании,
эта книга помогает начинающим разработчикам научиться всему, что необходимо для создания качественных веб-приложений.
Вы начнете с общего описания технологии и постепенно перейдете к синтаксису языка, приемам программирования и другим важным деталям. При этом будут использоваться примеры, демонстрирующие
и правильное применение языка, и распространенные идиомы. Предполагается, что читатель уже имеет
опыт работы с HTML.
Вы получите множество рекомендаций по стилю программирования и процессу разработки ПО от
Кевина Татро и Питера Макинтайра. Этот материал, изложенный в доступной и компактной форме, поможет вам овладеть мастерством программирования на PHP.
• Общие сведения о том, какой результат можно получить, используя PHP.
• Основы языка, включая типы данных, переменные, операторы, управляющие команды.
• Функции, строки, массивы и объекты.
• Решение распространенных задач разработки: обработка форм, проверка данных, отслеживание
сеансовых данных и cookie.
• Работа с реляционными базами данных (MySQL) и базами данных NoSQL (например MongoDB).
• Генерирование изображений, создание файлов PDF, парсинг файлов XML.
• Безопасность скриптов, обработка ошибок, оптимизация быстродействия и другие нетривиальные
темы.

16+ (В соответствии с Федеральным законом от 29 декабря 2010 г. № 436-ФЗ.)

ББК 32.988.02-018
УДК 004.738.5
Права на издание получены по соглашению с O’Reilly. Все права защищены. Никакая часть данной книги
не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев
авторских прав.
Информация, содержащаяся в данной книге, получена из источников, рассматриваемых издательством как
надежные. Тем не менее, имея в виду возможные человеческие или технические ошибки, издательство не
может гарантировать абсолютную точность и полноту приводимых сведений и не несет ответственности за
возможные ошибки, связанные с использованием книги. Издательство не несет ответственности за доступность материалов, ссылки на которые вы можете найти в этой книге. На момент подготовки книги к изданию
все ссылки на интернет-ресурсы были действующими.
ISBN 978-1492054139 англ.
Authorized Russian translation of the English edition of Programming PHP, 4E
ISBN 9781492054139 © 2020 Kevin Tatroe and Peter MacIntyre.
This translation is published and sold by permission of O’Reilly Media, Inc.,
which owns or controls all rights to publish and sell the same.
ISBN 978-5-4461-1488-7
© Перевод на русский язык ООО Издательство «Питер», 2021
© Издание на русском языке, оформление ООО Издательство «Питер», 2021
© Серия «Бестселлеры O’Reilly», 2021

Краткое содержание

Введение................................................................................................................................. 21
Предисловие........................................................................................................................ 24
Глава 1. Знакомство с PHP............................................................................................... 29
Глава 2. Основы языка...................................................................................................... 44
Глава 3. Функции................................................................................................................. 99
Глава 4. Строки...................................................................................................................114
Глава 5. Массивы...............................................................................................................164
Глава 6. Объекты................................................................................................................197
Глава 7. Дата и время.......................................................................................................224
Глава 8. Веб-технологии.................................................................................................229
Глава 9. Базы данных.......................................................................................................261
Глава 10. Графика..............................................................................................................288
Глава 11. PDF.......................................................................................................................311

Краткое содержание  5

Глава 12. XML.......................................................................................................................326
Глава 13. JSON.....................................................................................................................349
Глава 14. Безопасность...................................................................................................354
Глава 15. Методы разработки приложений..........................................................376
Глава 16. Веб-службы......................................................................................................392
Глава 17. Отладка PHP.....................................................................................................402
Глава 18. PHP на разных платформах.......................................................................418
Приложение. Справочник по функциям...............................................................426

Оглавление

Введение...................................................................................................................21
Предисловие............................................................................................................24
Для кого написана эта книга....................................................................................................24
Что требуется от читателя.........................................................................................................25
Структура книги.............................................................................................................................25
Типографские соглашения........................................................................................................27
Благодарности................................................................................................................................28
Кевин Татро...............................................................................................................................28
Питер Макинтайр...................................................................................................................28
От издательства..............................................................................................................................28
Глава 1. Знакомство с PHP......................................................................................29
Что делает PHP?..............................................................................................................................29
Краткая история PHP...................................................................................................................30
Эволюция PHP..........................................................................................................................30
Широкое использование PHP...........................................................................................35
Установка PHP.................................................................................................................................36
Краткий обзор PHP.......................................................................................................................36
Страница конфигурации.....................................................................................................37
Формы..........................................................................................................................................37
Базы данных..............................................................................................................................39
Графика.......................................................................................................................................41
Что дальше?......................................................................................................................................43

Оглавление  7

Глава 2. Основы языка............................................................................................44
Лексическая структура...............................................................................................................44
Регистр символов...................................................................................................................44
Команды и символ «;»...........................................................................................................44
Пробелы и разрывы строк.................................................................................................45
Комментарии............................................................................................................................46
Литералы....................................................................................................................................49
Идентификаторы....................................................................................................................49
Типы данных....................................................................................................................................52
Целые числа..............................................................................................................................52
Числа с плавающей точкой................................................................................................53
Строки..........................................................................................................................................54
Логические значения............................................................................................................55
Массивы......................................................................................................................................56
Объекты......................................................................................................................................57
Ресурсы.......................................................................................................................................58
Обратные вызовы...................................................................................................................59
NULL..............................................................................................................................................60
Переменные.....................................................................................................................................60
Переменные в переменных...............................................................................................61
Ссылки на переменные........................................................................................................61
Область видимости переменных....................................................................................62
Сборка мусора.........................................................................................................................64
Выражения и операторы...........................................................................................................66
Количество операндов........................................................................................................68
Приоритет операторов........................................................................................................68
Ассоциативность операторов..........................................................................................69
Неявное преобразование типов.....................................................................................69
Арифметические операторы.............................................................................................70
Оператор конкатенации строк.........................................................................................71
Операторы автоинкремента и автодекремента.......................................................71
Операторы сравнения.........................................................................................................72
Поразрядные операторы....................................................................................................75

8  Оглавление

Логические операторы...............................................................................................................77
Операторы преобразования типов...............................................................................78
Операторы присваивания..................................................................................................79
Прочие операторы.......................................................................................................................81
Управляющие команды..............................................................................................................82
if......................................................................................................................................................82
switch............................................................................................................................................84
while..............................................................................................................................................86
for...................................................................................................................................................89
foreach..........................................................................................................................................90
try...catch......................................................................................................................................91
declare..........................................................................................................................................91
exit и return................................................................................................................................92
goto...............................................................................................................................................93
Включение кода.............................................................................................................................93
Встраивание PHP в веб-страницы.........................................................................................95
Стандартный стиль (XML)....................................................................................................96
Стиль SGML................................................................................................................................97
Прямой эхо-вывод содержимого....................................................................................98
Что дальше?......................................................................................................................................98
Глава 3. Функции......................................................................................................99
Вызов функции...............................................................................................................................99
Определение функции............................................................................................................. 101
Область видимости переменной........................................................................................ 103
Глобальные переменные................................................................................................. 104
Статические переменные................................................................................................ 104
Параметры функций................................................................................................................. 105
Передача параметров по значению........................................................................... 105
Передача параметров по ссылке................................................................................. 105
Параметры по умолчанию............................................................................................... 106
Переменные параметры.................................................................................................. 106
Пропущенные параметры............................................................................................... 108

Оглавление  9

Рекомендации типов.......................................................................................................... 108
Возвращаемые значения................................................................................................. 109
Имена функций в переменных............................................................................................. 110
Анонимные функции................................................................................................................ 111
Что дальше?................................................................................................................................... 113
Глава 4. Строки...................................................................................................... 114
Строковые константы............................................................................................................... 114
Интерполяция переменных............................................................................................ 114
Одинарные кавычки........................................................................................................... 115
Строки в двойных кавычках........................................................................................... 116
Строки heredoc..................................................................................................................... 117
Вывод строк.................................................................................................................................. 119
echo............................................................................................................................................ 119
print()......................................................................................................................................... 119
printf()........................................................................................................................................ 120
print_r() и var_dump()......................................................................................................... 122
Обращение к отдельным символам.................................................................................. 124
Очистка строк.............................................................................................................................. 124
Удаление пробелов............................................................................................................. 124
Изменение регистра.......................................................................................................... 125
Кодирование и экранирование........................................................................................... 126
HTML.......................................................................................................................................... 126
Удаление тегов HTML......................................................................................................... 128
URL.............................................................................................................................................. 129
Кодирование строк C......................................................................................................... 131
Сравнение строк......................................................................................................................... 132
Точные сравнения............................................................................................................... 132
Приблизительное равенство......................................................................................... 134
Операции со строками и поиск........................................................................................... 135
Подстроки............................................................................................................................... 135
Прочие строковые функции........................................................................................... 137
Декомпозиция строк.......................................................................................................... 138
Функции поиска в строках.............................................................................................. 140

10  Оглавление

Регулярные выражения........................................................................................................... 142
Основы регулярных выражений.................................................................................. 143
Символьные классы........................................................................................................... 144
Альтернативы........................................................................................................................ 145
Повторяющиеся последовательности....................................................................... 145
Подпаттерны.......................................................................................................................... 146
Ограничители........................................................................................................................ 146
Поведение при поиске совпадения............................................................................ 147
Символьные классы........................................................................................................... 147
Якоря......................................................................................................................................... 149
Квантификаторы и жадность......................................................................................... 150
Несохраняемые группы.................................................................................................... 151
Обратные ссылки................................................................................................................. 151
Флаги-модификаторы........................................................................................................ 151
Встроенные флаги............................................................................................................... 153
Опережающие и ретроспективные проверки....................................................... 153
Отсечение............................................................................................................................... 155
Условные выражения........................................................................................................ 156
Функции................................................................................................................................... 156
Отличия от регулярных выражений Perl......................................................................... 162
Что дальше?................................................................................................................................... 163
Глава 5. Массивы................................................................................................... 164
Индексируемые и ассоциативные массивы................................................................... 164
Идентификация элементов массива.................................................................................. 165
Хранение данных в массивах................................................................................................ 166
Присоединение значений к массиву.......................................................................... 168
Присваивание диапазона значений........................................................................... 168
Получение размера массива.......................................................................................... 168
Дополнение массива......................................................................................................... 169
Многомерные массивы........................................................................................................... 169
Извлечение множественных значений............................................................................ 170
Получение сегмента массива......................................................................................... 171
Разбиение массива............................................................................................................. 171

Оглавление  11

Ключи и значения................................................................................................................ 172
Проверка существования элемента........................................................................... 172
Удаление и вставка элементов в массив................................................................... 173
Преобразование между массивами и переменными................................................ 175
Создание переменных из массива.............................................................................. 175
Создание массива из переменных.............................................................................. 176
Перебор массивов.............................................................................................................. 176
Конструкция foreach........................................................................................................... 176
Функции итератора............................................................................................................ 177
Перебор в цикле for........................................................................................................... 178
Вызов функции для каждого элемента массива.................................................... 179
Свертка массива................................................................................................................... 180
Поиск значений.................................................................................................................... 181
Сортировка............................................................................................................................. 183
Сортировка одного массива........................................................................................... 183
Сортировка в естественном порядке........................................................................ 186
Одновременная сортировка нескольких массивов............................................ 186
Обратная перестановка массивов............................................................................... 187
Случайная перестановка................................................................................................. 188
Выполнение операций с каждым элементом массива............................................. 188
Вычисление суммы элементов массива.................................................................... 189
Слияние двух массивов.................................................................................................... 189
Вычисление разности между массивами................................................................. 189
Фильтрация элементов из массива............................................................................. 190
Использование массивов для реализации типов данных...................................... 191
Множества.............................................................................................................................. 191
Стеки.......................................................................................................................................... 192
Реализация интерфейса Iterator.......................................................................................... 193
Что дальше?................................................................................................................................... 196
Глава 6. Объекты................................................................................................... 197
Объекты.......................................................................................................................................... 197
Терминология.............................................................................................................................. 198
Создание объекта................................................................................................................ 199

12  Оглавление

Обращение к свойствам и методам................................................................................... 200
Объявление класса.................................................................................................................... 201
Объявление методов......................................................................................................... 201
Объявление свойств.......................................................................................................... 204
Объявление констант........................................................................................................ 206
Наследование........................................................................................................................ 207
Интерфейсы........................................................................................................................... 208
Трейты....................................................................................................................................... 208
Абстрактные методы................................................................................................................. 211
Конструкторы........................................................................................................................ 212
Деструкторы.......................................................................................................................... 213
Анонимные классы.................................................................................................................... 214
Интроспекция.............................................................................................................................. 214
Анализ классов..................................................................................................................... 214
Анализ объекта..................................................................................................................... 216
Пример использования интроспекции..................................................................... 217
Сериализация........................................................................................................................ 220
Что дальше?................................................................................................................................... 223
Глава 7. Дата и время........................................................................................... 224
Абстрактные методы................................................................................................................. 211
Что дальше?................................................................................................................................... 228
Глава 8. Веб-технологии...................................................................................... 229
Основы HTTP................................................................................................................................ 229
Переменные.................................................................................................................................. 230
Информация о сервере........................................................................................................... 231
Обработка форм......................................................................................................................... 233
Методы..................................................................................................................................... 233
Параметры.............................................................................................................................. 235
Генерация и обработка формы на одной странице............................................ 236
Формы с памятью................................................................................................................ 238
Параметры со множественными значениями....................................................... 239
Параметры со множественными значениями с памятью................................. 241

Оглавление   13

Отправка файлов................................................................................................................. 242
Проверка данных форм.................................................................................................... 244
Заполнение заголовков ответа..................................................................................... 246
Типы содержимого.............................................................................................................. 247
Перенаправление............................................................................................................... 247
Срок действия....................................................................................................................... 248
Аутентификация................................................................................................................... 249
Управление состоянием.......................................................................................................... 250
Cookie........................................................................................................................................ 251
Сеансы...................................................................................................................................... 255
Объединение cookie с сеансами.................................................................................. 258
SSL............................................................................................................................................... 259
Что дальше?................................................................................................................................... 260
Глава 9. Базы данных........................................................................................... 261
Работа с БД в PHP........................................................................................................................ 261
Реляционные БД и SQL............................................................................................................. 262
PDO............................................................................................................................................. 263
Создание подключения.................................................................................................... 264
Интерфейс объекта MySQLi................................................................................................... 268
Получение данных для вывода..................................................................................... 269
SQLite................................................................................................................................................ 270
Непосредственное выполнение операций на уровне файлов............................. 273
MongoDB........................................................................................................................................ 281
Получение данных.............................................................................................................. 284
Вставка более сложных данных.................................................................................... 284
Что дальше?................................................................................................................................... 287
Глава 10. Графика.................................................................................................. 288
Встраивание изображений в страницу............................................................................ 288
Основные принципы работы с графикой....................................................................... 289
Создание изображений и операции графического вывода................................... 290
Структура графической программы........................................................................... 291
Изменение выходного формата................................................................................... 292

14  Оглавление

Проверка поддерживаемых форматов изображений....................................... 293
Чтение существующего файла....................................................................................... 294
Основные функции графического вывода.............................................................. 294
Изображения с текстом........................................................................................................... 295
Шрифты.................................................................................................................................... 296
Шрифты TrueType................................................................................................................. 297
Динамически сгенерированные кнопки......................................................................... 299
Кэширование динамически сгенерированных кнопок..................................... 300
Быстрое кэширование...................................................................................................... 301
Масштабирование изображений........................................................................................ 303
Обработка цветов...................................................................................................................... 305
Использование альфа-канала....................................................................................... 306
Определение цвета............................................................................................................ 307
Индексы True Color.............................................................................................................. 308
Текстовое представление изображения................................................................... 309
Что дальше?................................................................................................................................... 310
Глава 11. PDF.......................................................................................................... 311
Расширения PDF......................................................................................................................... 311
Документы и страницы............................................................................................................ 311
Простой пример................................................................................................................... 312
Инициализация документа............................................................................................. 312
Вывод базовых текстовых ячеек................................................................................... 313
Текст.................................................................................................................................................. 313
Координаты............................................................................................................................ 313
Атрибуты текста................................................................................................................... 316
Верхние и нижние колонтитулы и расширение класса..................................... 318
Изображения и ссылки..................................................................................................... 320
Таблицы и данные............................................................................................................... 323
Что дальше?................................................................................................................................... 325
Глава 12. XML......................................................................................................... 326
Краткий обзор XML.................................................................................................................... 326
Генерирование XML.................................................................................................................. 328

Оглавление  15

Разбор XML.................................................................................................................................... 330
Обработчики элементов.................................................................................................. 331
Обработчик символьных данных................................................................................. 332
Инструкции по обработке............................................................................................... 332
Обработчики сущностей.................................................................................................. 333
Обработчик по умолчанию............................................................................................. 335
Параметры конфигурации.............................................................................................. 336
Использование парсера................................................................................................... 337
Ошибки..................................................................................................................................... 338
Методы как обработчики................................................................................................. 339
Пример разбора XML в приложении................................................................................ 340
Разбор XML парсером DOM................................................................................................... 344
Разбор XML из SimpleXML...................................................................................................... 345
Преобразование XML на базе XSLT.................................................................................... 346
Что дальше?................................................................................................................................... 348
Глава 13. JSON........................................................................................................ 349
Использование JSON................................................................................................................ 349
Сериализация объектов PHP................................................................................................ 350
Управляющие параметры................................................................................................ 352
Что дальше?................................................................................................................................... 353
Глава 14. Безопасность........................................................................................ 354
Защитные меры........................................................................................................................... 354
Фильтрация ввода............................................................................................................... 355
Экранирование выходных данных.............................................................................. 357
Дефекты безопасности............................................................................................................ 362
Межсайтовое выполнение скриптов......................................................................... 362
Внедрение SQL............................................................................................................................ 363
Уязвимости имен файлов................................................................................................. 364
Фиксация сеанса.................................................................................................................. 366
Ловушки отправки файлов.............................................................................................. 366
Несанкционированный доступ к файлам................................................................ 368
Проблемы с кодом PHP..................................................................................................... 371

16  Оглавление

Слабости командной оболочки.................................................................................... 373
Проблемы шифрования данных................................................................................... 373
Дополнительная информация............................................................................................. 374
Сводка по безопасности.................................................................................................. 374
Что дальше?................................................................................................................................... 375
Глава 15. Методы разработки приложений..................................................... 376
Библиотеки кода......................................................................................................................... 376
Системы шаблонизации................................................................................................... 377
Обработка вывода.............................................................................................................. 380
Сжатие вывода...................................................................................................................... 383
Оптимизация скорости............................................................................................................ 383
Бенчмарк................................................................................................................................. 384
Профилирование................................................................................................................. 386
Оптимизация времени выполнения........................................................................... 387
Обратные прокси-серверы и репликация............................................................... 388
Что дальше?................................................................................................................................... 391
Глава 16. Веб-службы........................................................................................... 392
Клиенты REST ............................................................................................................................... 392
Ответы...................................................................................................................................... 394
Получение ресурсов.......................................................................................................... 395
Обновление ресурсов....................................................................................................... 395
Создание ресурсов............................................................................................................. 396
Удаление ресурсов............................................................................................................. 397
XML-RPC.......................................................................................................................................... 397
Серверы................................................................................................................................... 398
Клиенты.................................................................................................................................... 400
Что дальше?................................................................................................................................... 401
Глава 17. Отладка PHP.......................................................................................... 402
Среда разработки...................................................................................................................... 402
Промежуточная среда............................................................................................................. 403
Эксплуатационная среда........................................................................................................ 404

Оглавление  17

Настройки php.ini....................................................................................................................... 404
Обработка ошибок.................................................................................................................... 406
Сообщения об ошибках.................................................................................................... 406
Исключения............................................................................................................................ 408
Управление ошибками...................................................................................................... 408
Выдача ошибок..................................................................................................................... 409
Определение обработчиков ошибок......................................................................... 409
Ручная отладка............................................................................................................................ 413
Журналы ошибок........................................................................................................................ 414
Отладка в IDE................................................................................................................................ 415
Другие приемы отладки.......................................................................................................... 417
Что дальше?................................................................................................................................... 417
Глава 18. PHP на разных платформах................................................................ 418
Написание межплатформенного кода для Windows и Unix.................................... 418
Определение платформы................................................................................................ 419
Обработка путей на разных платформах................................................................. 419
Получение информации о серверной среде.......................................................... 419
Отправка почты.................................................................................................................... 420
Обработка конца строки.................................................................................................. 421
Обработка конца файла.................................................................................................... 422
Внешние команды............................................................................................................... 422
Платформенные расширения........................................................................................ 422
Взаимодействие с COM............................................................................................................ 423
Вводный курс......................................................................................................................... 423
Функции PHP.......................................................................................................................... 424
Спецификации API.............................................................................................................. 425
Приложение. Справочник по функциям........................................................... 426
Функции PHP по категориям................................................................................................. 426
Массивы................................................................................................................................... 426
Классы и объекты................................................................................................................ 427
Фильтрация данных............................................................................................................ 428
Дата и время.......................................................................................................................... 428

18  Оглавление

Каталог...................................................................................................................................... 428
Ошибки и ведение журнала........................................................................................... 428
Файловая система............................................................................................................... 429
Функции................................................................................................................................... 430
Почта......................................................................................................................................... 430
Математические вычисления........................................................................................ 430
Разные функции................................................................................................................... 431
Сеть............................................................................................................................................ 431
Буферизация вывода......................................................................................................... 431
Выделение лексем в языке PHP.................................................................................... 432
Параметры/информация PHP........................................................................................ 432
Выполнение программы.................................................................................................. 432
Сеансы...................................................................................................................................... 433
Потоки....................................................................................................................................... 433
Строки....................................................................................................................................... 434
URL.............................................................................................................................................. 435
Переменные........................................................................................................................... 435
Zlib.............................................................................................................................................. 435
Алфавитный указатель функций PHP................................................................................ 436

Отзывы о четвертом издании «Создаем
динамические веб-сайты на PHP»
«Версия PHP 7 возродила экосистему PHP, предоставив мощное сочетание производительности мирового уровня и востребованной функциональности. Если
вы ищете книгу, которая поможет применить этот потенциал, то новое издание
“Создаем динамические веб-сайты на PHP” — именно то, что вам нужно!»
Зеев Сураски (Zeev Suraski), один из создателей PHP

«Выбирая эту книгу Питера Макинтайра и Кевина Татро, вы делаете первый
шаг на пути не только изучения PHP и его основ, но и будущего построения
веб-сайтов и разработки веб-приложений. При четком понимании языка PHP
и доступных инструментов единственными ограничениями в разработке для вас
станут воображение и готовность расти и вливаться в сообщество».
Майкл Стоу (Michael Stowe), автор, лектор и технический специалист

«Здесь есть все подробности, характерные для книг по программированию,
и темы более высокого уровня, которые будут интересны профи».
Джеймс Томс (James Thoms), старший разработчик в ClearDev

Введение

Даже не верится, что я впервые прочитал о PHP почти 20 лет назад. Мой интерес к программированию выходил за рамки Netscape Composer и статической
разметки HTML. Я знал, что PHP позволит мне создавать динамические, более
умные сайты, а также выполнять сохранение и выборку данных для создания
интерактивных веб-приложений.
Было сложно представить, какой долгий путь я пройду с PHP, как через 20 лет
он покорит 80 % интернет-пользователей и каким дружелюбным сообществом
он будет поддерживаться.
Путь в тысячу ли начинается с первого шага. Выбирая эту книгу Питера Макинтайра и Кевина Татро, вы делаете первый шаг на пути не только изучения PHP
и его основ, но и будущего построения веб-сайтов и разработки веб-приложений.
При четком понимании языка PHP и доступных инструментов единственными
ограничениями в разработке для вас станут воображение и готовность расти
и вливаться в сообщество. Этот ваш путь, в котором возможности безграничны,
а результат зависит от вас.
Пока вы готовитесь начать этот путь, хотел бы поделиться с вами парой полезных советов. Во-первых, прочитайте каждую главу и примените ее материал на
практике, опробуйте разные возможности и не бойтесь что-нибудь сломать или
ошибиться. Хотя эта книга закладывает прочный фундамент, вы должны сами
исследовать язык и отыскать новые творческие возможности для объединения
всех компонентов.
Второй совет: станьте активным участником сообщества PHP. Пользуйтесь
помощью сетевых сообществ, пользовательских групп и конференций PHP
настолько, насколько это возможно. Когда вы опробуете новые возможности,
поделитесь информацией с сообществом, чтобы получить обратную связь
и рекомендации.
В сообществе вы не только найдете поддержку исключительно приятных людей,
которые с радостью потратят время, чтобы упростить вам задачу, но и вырабо-

Введение  21

таете привычку к непрерывному обучению. Это позволит вам быстрее освоить
базовые навыки PHP и оставаться в курсе новых теорий программирования,
технологий, инструментов и изменений. Еще там вас поджидает целая лавина
несмешных каламбуров (в том числе и от вашего покорного слуги).
В общем, хочу одним из первых поприветствовать вас и пожелать успехов
в вашем пути, для которого лучшим первым шагом станет чтение этой книги!
Майкл Стоу, автор, лектор и технический специалист
Сан-Франциско, Калифорния, зима 2020 года

Посвящается Дженн
КТ

Я посвящаю свои части книги моей
­замечательной жене — Дон Этте Райли.
Люблю тебя!
ПM

Предисловие

В наши дни интернет стал основным каналом личных и корпоративных взаимодействий. С помощью веб-сайтов можно найти спутниковые снимки всей
Земли, заняться поиском жизни в космосе, разместить личные фотоальбомы,
сделать покупки и многое другое. Часто веб-сайты строятся на базе PHP — языка
скриптов с открытым кодом, предназначенного прежде всего для генерирования
HTML-контента.
Появившийся в 1994 году язык PHP смог покорить интернет, и сейчас феноменальный рост его популярности продолжается. Миллионы веб-сайтов, работающих на базе технологии PHP, — наглядное свидетельство широты и доступности
его использования. Любой желающий может изучить язык PHP и использовать
его для построения мощных динамических веб-сайтов.
Базовый язык PHP предоставляет мощные средства работы со строками и массивами, а также значительно усовершенствованную поддержку объект­ноориентированного программирования (ООП). Благодаря стандартным и дополнительным модулям расширения приложения PHP могут взаимодействовать
с такими базами данных (БД), как MySQL или Oracle, строить графики, создавать
PDF-файлы и разбирать разметку XML.Также PHP может работать в системе
Windows, что позволяет ему управлять другими приложениями Windows (например, Word и Excel через COM) или работать с БД по стандарту ODBC.
Эта книга представляет собой учебник по языку PHP. Прочитав ее (никаких
спойлеров!), вы будете знать, как работает этот язык, научитесь пользоваться
разными мощными расширениями, входящими в его стандартную поставку,
а также строить собственные веб-приложения.

Для кого написана эта книга
PHP — это «плавильный котел» для смешения направлений программирования.
Веб-дизайнеры ценят его за доступность и удобство, а программистам нравится
его гибкость, мощность, разнообразие и скорость. Обоим направлениям необходим понятный и точный справочник по языку. Если вы (веб-)программист, то

24  Предисловие

эта книга написана для вас. Мы представим общую картину языка PHP, а затем
изложим подробности, не отнимая у вас лишнего времени. Многочисленные примеры, практические рекомендации по программированию и советы по стилю помогут вам стать не просто программистом PHP, а хорошим программистом PHP.
Веб-дизайнеры оценят доступные и практичные рекомендации по использованию конкретных технологий: JSON, XML, сеансовых данных, генерирования
PDF, работы с графикой и т. д. Описание PHP и базовые концепции программирования изложены в книге доступным языком.

Что требуется от читателя
Мы предполагаем, что читатель обладает практическими навыками работы
с HTML. Если вы не знаете HTML, потренируйтесь на простых веб-страницах,
прежде чем браться за PHP. Для получения дополнительной информации
о HTML рекомендуем книгу «HTML и XHTML: подробное руководство» Чака
Муссиано и Билла Кеннеди.

Структура книги
Материал организован так, чтобы вы могли либо читать текст подряд, либо переходить к интересующим вас темам. Книга состоит из 18 глав и одного приложения.
Глава 1 «Знакомство с PHP»
История PHP и предельно краткий обзор того, что можно делать с помощью
PHP.
Глава 2 «Основы языка»
Краткое описание элементов: идентификаторов, типов данных, операторов
и управляющих команд.
Глава 3 «Функции»
Функции, определяемые пользователем: область действия, списки параметров переменной длины, переменные и анонимные функции.
Глава 4 «Строки»
Функции, используемые для построения, разбиения, поиска и изменения
строк в коде PHP.
Глава 5 «Массивы»
Синтаксис и функции для построения, обработки и сортировки массивов.

Структура книги  25

Глава 6 «Объекты»
Обновленное описание средств ООП в PHP: классов, объектов, наследования
и интроспекции.
Глава 7 «Дата и время»
Операции с датой и временем: управление часовыми поясами, математические операции с датами.
Глава 8 «Веб-технологии»
Средства, с которыми рано или поздно придется иметь дело каждому программисту PHP: обработка данных веб-форм, управление состоянием, поддержка SSL и т. д.
Глава 9 «Базы данных»
Модули и функции для работы с БД на примере MySQL, интерфейсы БД
SQLite и PDO и основные концепции NoSQL.
Глава 10 «Графика»
Создание и изменение графических файлов различных форматов из PHP.
Глава 11 «PDF»
Создание динамических файлов PDF из PHP.
Глава 12 «XML»
Расширения PHP для генерирования и разбора данных XML.
Глава 13 «JSON»
Работа с JSON (JavaScript object notation) — стандартизированным форматом обмена данными, который был задуман как исключительно простой
и удобочитаемый.
Глава 14 «Безопасность»
Полезные советы и рекомендации для программистов, создающих безопасные
скрипты, эффективные приемы предотвращения неисправимых ошибок.
Глава 15 «Методы разработки приложений»
Общие приемы программирования: реализация библиотек программного
кода, особые возможности вывода и обработка ошибок.
Глава 16 «Веб-службы»
Внешние взаимодействия с использованием инструментов REST и подключений к облачным платформам.

26  Предисловие

Глава 17 «Отладка PHP»
Методы отладки кода PHP и написания кода PHP, упрощающего процесс
отладки.
Глава 18 «PHP на разных платформах»
Хитрости и потенциальные проблемы версии PHP для Windows, в том числе
COM.
Приложение
Краткий справочник основных функций PHP.

Типографские соглашения
В этой книге приняты следующие типографские соглашения:
Курсив
Используется для обозначения новых терминов.
Моноширинный шрифт

Применяется для оформления листингов программ и программных элементов внутри обычного текста: имен переменных и функций, БД, типов данных,
переменных окружения, инструкций и ключевых слов.
Моноширинный жирный

Обозначает команды или другой текст, который должен вводиться пользователем.
Моноширинный курсив

Обозначает текст, который должен замещаться фактическими значениями,
вводимыми пользователем или определяемыми из контекста.

Так обозначаются советы, предложения и примечания общего характера.

Типографские соглашения  27

Благодарности
Кевин Татро
Как и прежде, выражаю свою благодарность всем, кто когда-либо писал код для
проекта PHP, вносил свой вклад в работу над необъятной экосистемой PHP или
программировал на PHP. Благодаря этим людям язык PHP стал тем, чем он стал
и еще станет в будущем.
Спасибо моим родителям, которые когда-то купили мне маленький набор Lego
для долгого и пугающего авиарейса. Этот набор положил начало моему стремлению к творчеству и порядку, которое продолжает вдохновлять меня и по сей день.
Наконец, от всей души благодарю Дженн и Хэддена за то, что помогли мне найти
вдохновение и поддерживали меня в повседневной работе.

Питер Макинтайр
Благодарю Господа моего, который дает мне силы встречать каждый новый день!
Он создал электричество, позволяющее мне зарабатывать на жизнь. Благодарность и хвала ему за эту потрясающую часть Его творения!
Спасибо Кевину, который снова стал моим основным соавтором для этого издания. Спасибо за работу и за то, что был сосредоточен на проекте вплоть до
его публикации.
Благодарю научных редакторов, тщательно проверивших и протестировавших
примеры кода, чтобы мы были уверены в достоверности материала. Линкольн,
Таня, Джим и Джеймс — спасибо!
И наконец, спасибо всем работникам издательства O’Reilly, которые так часто
остаются незамеченными, — я не знаю всех ваших имен, но понимаю, через что
вам пришлось пройти, чтобы такой проект наконец-то увидел свет. Редактирование, работа над графикой, верстка, планирование, маркетинг и т. д. — все это
необходимо было сделать, и я безусловно ценю ваш непростой труд.

От издательства
Обращаем ваше внимание, что книга соответствует версии языка 7.4. Ваши
замечания, предложения, вопросы отправляйте по адресу comp@piter.com (издательство «Питер», компьютерная редакция).
Мы будем рады узнать ваше мнение!
На веб-сайте издательства www.piter.com вы найдете подробную информа­цию
о наших книгах.

28  Предисловие

ГЛАВА 1

Знакомство с PHP

PHP — простой, но мощный язык, разработанный для создания HTML-контента.
В этой главе приводятся основные сведения о PHP: его природа и история, платформы, на которых он работает, и возможности настройки его конфигурации.
Глава завершается рабочим примером и кратким разбором нескольких программ
PHP, демонстрирующих такие распространенные операции, как обработка данных форм, взаимодействие с БД и создание графики.

Что делает PHP?
PHP используется в двух основных областях:
Серверные скрипты
Язык PHP изначально разрабатывался для создания динамического вебконтента и до сих пор лучше других языков подходит для этой задачи. Для
генерирования разметки HTML вам понадобится парсер PHP и веб-сервер
для отправки закодированных файлов. PHP также отлично генерирует динамический контент через подключение к БД, документы XML, графику,
файлы PDF и т. д.
Скрипты командной строки
PHP может выполнять скрипты в режиме командной строки по аналогии
с Perl, awk или командной оболочкой Unix. Скрипты командной строки
могут использоваться для таких задач системного администрирования, как
резервное копирование и разбор журналов, а также для разработки некоторых
скриптов в стиле заданий CRON (невизуальных задач PHP).
В этой книге мы сосредоточимся на первом пункте — разработке динамического
веб-контента.

Что делает PHP?  29

PHP работает на всех основных операционных системах, от семейства
Unix (включая Linux, FreeBSD, Ubuntu, Debian и Solaris) до Windows и macOS.
Он может использоваться на всех основных веб-серверах, включая Apache, Nginx
и OpenBSD (и это далеко не полный список), и даже в облачных средах, таких
как Azure и Amazon.
Сам по себе язык отличается исключительной гибкостью. Например, он не
ограничивается выводом только разметки HTML или других текстовых файлов
и позволяет генерировать любые форматы документов. В PHP есть встроенная
поддержка генерирования файлов PDF и изображений в форматах GIF, JPEG
и PNG.
Одной из самых выдающихся особенностей PHP является обширная поддержка БД. Он поддерживает MySQL, PostgreSQL, Oracle, Sybase, MS-SQL, DB2,
ODBC-совместимые и многие менее известные БД, а также новые БД в стиле
NoSQL (такие, как CouchDB и MongoDB).
PHP удивительно упрощает создание веб-страниц с динамическим контентом
с использованием информации из БД.
Наконец, он предоставляет библиотеку кода PHP для решения таких стандартных задач, как абстракция БД, обработка ошибок и т. д. Для этого используется
PEAR (PHP extension and application repository) — фреймворк и система распространения повторно используемых компонентов PHP.

Краткая история PHP
Расмус Лердорф (Rasmus Lerdorf) начал задумываться о создании PHP
в 1994 году, но PHP, который используется сегодня, сильно отличается от исходной версии. Чтобы понять, как PHP пришел к его нынешнему виду, полезно
знать историю эволюции языка. Эта история описана ниже (с комментариями
и сообщениями самого Расмуса).

Эволюция PHP
Перед вами анонс PHP 1.0, опубликованный в группе Usenet (comp.infosystems.
www.authoring.cgi) в июне 1995 года:
From: rasmus@io.org (Rasmus Lerdorf)
Subject: Announce: Personal Home Page Tools (PHP Tools)
Date: 1995/06/08
Message-ID: #1/1
organization: none
newsgroups: comp.infosystems.www.authoring.cgi
Сообщаю о выходе Personal Home Page Tools (PHP Tools) версии 1.0.

30  Глава 1. Знакомство с PHP

Эти инструменты представляют собой компактные двоичные файлы cgi,
написанные на C.
Они выполняют ряд функций, включая следующие:
. Регистрация обращений к страницам в приватных файлах журналов.
. Просмотр журнальной информации в реальном времени.
. Предоставление удобного интерфейса для информации журнала.
. Отображение последней информации об обращениях прямо на странице.
. Счетчики ежедневных и суммарных обращений.
. Запрет доступа пользователям в зависимости от домена.
. Парольная защита страниц в зависимости от домена.
. Отслеживание обращений ** по адресам электронной почты пользователей **.
. Отслеживание URL-источников обращений - поддержка HTTP_REFERER.
. Включения на стороне сервера без необходимости серверной поддержки.
. Запрет регистрации обращений из некоторых доменов (например, вашего).
. Удобное создание и отображение форм.
. Возможность использования данных форм в документах.
Чтобы пользоваться этими инструментами, вам НЕ понадобятся:
. Привилегированный доступ – он устанавливается в ваш каталог ~/public_html.
. Наличие серверных включений на вашем сервере.
. Доступ к Perl, Tcl или любому другому скриптовому интерпретатору.
. Доступ к файлам журналов httpd.
Для работы инструментария необходимо только одно требование: возможность
выполнения ваших программ cgi. Если вы не уверены, что это значит,
спросите у системного администратора.
Инструментарий также позволяет реализовать гостевую книгу или любую другую
форму, которая должна записать информацию и отобразить ее для пользователей
примерно через 2 минуты.
Инструментарий находится в общем пользовании и распространяется на условиях
лицензии GNU Public License. Да, это означает, что он бесплатный!
Чтобы увидеть, как работают эти инструменты, откройте в браузере
страницу http://www.io.org/~rasmus.
-Rasmus Lerdorf
rasmus@io.org
http://www.io.org/~rasmus

Учтите, что приведенные в сообщении URL и адрес электронной почты устарели. В анонсе отражены потребности, существовавшие в то время, — парольная
защита страниц, простое создание форм и обращение к данным форм на последующих страницах. Также отражено исходное позиционирование PHP как
фреймворка для ряда полезных инструментов.
Еще в анонсе упоминаются только те инструменты, которые входят в поставку
PHP, однако фреймворк должен был стать расширяемым. Бизнес-логика до-

Краткая история PHP  31

бавления новых инструментов реализовалась на C: простой парсер извлекал
теги из HTML и вызывал различные функции C. Создавать язык скриптов
никто не планировал.
Что же произошло?
Расмус начал работать над довольно крупным проектом для Университета
Торонто. Ему понадобился инструмент для извлечения данных из различных
источников и отображения удобного административного интерфейса на базе
веб-технологий. Конечно, он использовал PHP, но по соображениям производительности мелкие инструменты PHP 1.0 нужно было эффективно свести
воедино и интегрировать в веб-сервер.
Изначально в веб-сервер NCSA были внесены некоторые правки для поддержки базовой функциональности PHP. Недостаток такого подхода заключался
в том, что пользователю приходилось заменять свой веб-сервер специальной
модернизированной версией. К счастью, приблизительно в это же время набирал обороты проект Apache, и Apache API упрощал добавление к серверу такой
функциональности, как PHP.
Прошел приблизительно год. Многое было сделано, и направленность изменилась. Ниже приводится анонс PHP 2.0 (PHP/FI), опубликованный в апреле
1996 года:
From: rasmus@madhaus.utcs.utoronto.ca (Rasmus Lerdorf)
Subject: ANNOUNCE: PHP/FI Server-side HTML-Embedded Scripting Language
Date: 1996/04/16
Newsgroups: comp.infosystems.www.authoring.cgi
PHP/FI - встроенный скриптовый язык для HTML на стороне сервера. Он содержит
встроенные средства протоколирования и ограничения доступа, а также
поддержку встроенных запросов SQL к БД mSQL и/или Postgres95.
Скорее всего, это самый быстрый и простой инструмент для создания
веб-сайтов с поддержкой БД.
Он работает практически на любом веб-сервере на базе UNIX и всех
существующих разновидностях UNIX. Пакет полностью бесплатен для любых
применений, включая коммерческие.
Основные возможности:
. Ведение журналов доступа
Сохраняйте информацию о каждом обращении к вашим страницам в БД
dbm или mSQL. Наличие такой информации в формате БД упростит
последующий анализ.
. Ограничение доступа
Защищайте свои страницы паролем или ограничивайте доступ требованием
ссылки URL или другими условиями.
. Поддержка mSQL
Встраивайте запросы mSQL прямо в исходные файлы HTML.

32  Глава 1. Знакомство с PHP

. Поддержка Postgres95
Встраивайте запросы Postgres95 прямо в исходные файлы HTML.
. Поддержка DBM
Поддерживаются DB, DBM, NDBM и GDBM.
. Поддержка отправки файлов RFC-1867
Создавайте формы для отправки файлов:
. переменные, массивы, ассоциативные массивы;
. пользовательские функции со статическими переменными + рекурсия;
. условные команды и циклы While.
Вряд ли можно найти более простой способ написания условных динамических
веб-страниц, чем с условными командами PHP/FI и поддержкой циклов.
. Расширенные регулярные выражения
Мощная поддержка работы со строками на базе полноценной поддержки
регулярных выражений.
. Управление низкоуровневыми заголовками HTTP
Позволяет отправлять специально настроенные заголовки HTTP
для реализации расширенных возможностей (например, cookie).
. Динамическое создание изображений в формате GIF
Библиотека GD Томаса Бутелла (Thomas Boutell) поддерживается
в виде набора простых и удобных тегов.
Библиотеку можно загрузить из файлового архива по адресу

-Rasmus Lerdorf
rasmus@vex.net

Здесь впервые был использован термин скриптовый язык. Упрощенный код
замены тегов, примененный в PHP 1.0, был заменен парсером, который мог
обеспечить поддержку более сложного встроенного скриптового языка. По сегодняшним стандартам язык тегов был не особенно сложным, но по сравнению
с PHP 1.0 его безусловно можно было таким считать.
Чем же были вызваны эти изменения? Дело в том, что разработчикам, пользовавшимся PHP 1.0, было неудобно использовать фреймворк на базе C для
создания расширений. Большинство пользователей интересовала возможность
внедрения логики прямо в веб-страницы для создания условной разметки
HTML, нестандартных тегов и т. д., они требовали добавления таких функций,
как включение счетчиков обращений в завершающие блоки или условная передача разных блоков HTML. Это привело к созданию тега if. А если у вас есть
if, то должен быть и else… и это только начало пути, который рано или поздно
привел бы автора к созданию скриптового языка.
К середине 1997 года версия PHP 2.0 прошла значительный путь и привлекла
пользователей. Тем не менее у ядра ее парсера возникали проблемы со стабильностью. Проектом все еще занимался только один человек, хотя и с некоторой
сторонней помощью. На этой стадии Зеев Сураски (Zeev Suraski) и Энди Гутманс (Andi Gutmans) из Тель-Авива вызвались переписать ядро парсера, и их

Краткая история PHP  33

версия была положена в основу PHP версии 3.0. Другие программисты также
предложили свою помощь в работе над разными частями PHP. Так разработка
одного человека с несколькими соавторами превратилась в полноценный проект
с открытым кодом, над которым трудится множество разработчиков по всему миру.
Анонс PHP 3.0 от июня 1998 года:
6 июня 1998 -- Команда разработчиков PHP объявила о выходе PHP 3.0 новейшей версии скриптового решения, которое уже используется на более
70 000 веб-сайтов во Всемирной паутине.
Новая версия популярного языка скриптов включает поддержку
всех основных операционных систем (Windows 95/NT, большинство версий Unix
и Macintosh) и веб-серверов (включая Apache, Netscape,
WebSite Pro и Microsoft Internet Information Server).
PHP 3.0 также поддерживает широкий спектр БД, включая Oracle,
Sybase, Solid, MySQ, mSQL и PostgreSQL, а также источники данных ODBC.
Появились такие новые функции, как постоянные подключения к БД,
поддержка протоколов SNMP и IMAP, а также переработанный API языка C
для дополнения языка новыми возможностями.
"PHP – скриптовый язык, подходящий
как для людей с минимальным или нулевым опытом программирования,
так и опытных веб-разработчиков, которые хотят быстро справиться
со своей задачей. Самое лучшее в PHP - то, что он позволяет быстро
получить результат", - сказал Расмус Лердорф, один из разработчиков языка.
"Версия 3 предоставляет намного более мощную, надежную и эффективную
реализацию языка, сохраняя при этом простоту использования и быстроту
разработки, которые были ключевыми причинами прежнего успеха PHP", добавил Энди Гутманс, один из создателей реализации нового языкового ядра.
"Мы в Circle Net считаем PHP самой надежной платформой для быстрой
разработки приложений на базе веб-технологий из всех существующих, сказал Трой Кобб, технический директор Circle Net, Inc. - Использование PHP
в нашем случае сократило время разработки наполовину, а количество
положительных отзывов от клиентов увеличилось вдвое. PHP также позволяет
строить динамические решения на основе БД, работающие
с феноменальной скоростью".
Версия PHP 3.0 доступна для бесплатной загрузки в виде исходных текстов
и двоичных файлов для разных платформ по адресу http://www.php.net/.
Команда разработки PHP - международная группа программистов,
руководящих открытой разработкой PHP и сопутствующих проектов.
Для получения дополнительной информации свяжитесь с командой разработки
по адресу core@php.net.

После выхода PHP 3.0 количество пользователей стало стремительно расти.
Версия 4.0 была предложена разработчиками, которые хотели внести фун-

34  Глава 1. Знакомство с PHP

даментальные изменения в архитектуру PHP. Среди таких изменений были
абстрагирование уровня между языком и веб-сервером, добавление механизма
потоковой безопасности и улучшенной двухфазовой системы «разбор — выполнение». Новый парсер, написанный в основном Зеевом и Энди, получил
название Zend. В результате труда многих разработчиков версия PHP 4.0 была
выпущена 22 мая 2000 года.
На момент передачи этой книги в печать версия PHP 7.3 существует не первый
день. Был выпущен ряд промежуточных версий, а текущая версия работает достаточно стабильно. Как будет показано в книге, в этой версии PHP был внесен
ряд серьезных усовершенствований, прежде всего в обработке кода на стороне
сервера. Также были включены многочисленные второстепенные изменения,
расширения и улучшения функциональности.

Широкое использование PHP
На рис. 1.1 приведена сводка использования PHP, полученная по данным
W3Techs на март 2019 года. Наибольший интерес представляет тот факт, что

Рис. 1.1. Данные об использовании PHP на март 2019 года

Краткая история PHP  35

PHP используется на 79 % всех проанализированных сайтов, и при этом наиболее распространенной остается версия 5.0. Ознакомившись с методологией,
применяемой в аналитике W3Techs, вы увидите, что они выбирают 10 миллионов
наиболее популярных сайтов в мире (по размеру трафика). Безусловно, PHP
получил очень широкое распространение!

Установка PHP
Как мы уже упоминали, PHP работает на многих операционных системах и платформах. Обратитесь к документации PHP, найдите среду, наиболее близкую
к той, которую вы собираетесь использовать, и выполните соответствующие
инструкции по установке и настройке.
Время от времени нужно вносить изменения в конфигурацию PHP. Для этого
нужно изменить файл конфигурации PHP и перезапустить веб-сервер (Apache),
чтобы изменения вступили в силу.
Параметры конфигурации PHP обычно хранятся в файле с именем php.ini.
Настройки в этом файле управляют поведением разных функций PHP, таких
как поддержка сеансов и обработка форм. В дальнейших главах упоминаются
некоторые параметры php.ini, но в общем случае приводимый в книге код не
требует специализированой конфигурации. За дополнительной информацией
о настройке php.ini обращайтесь к документации PHP.

Краткий обзор PHP
Страницы PHP обычно представляют собой страницы HTML со встроенными
командами PHP. Этим PHP отличается от большинства других скриптовых
решений динамического генерирования HTML-страниц. Веб-сервер обрабатывает команды PHP и передает их вывод (а также всю разметку HTML из файла)
браузеру. В листинге 1.1 приведена полноценная страница PHP.
Листинг 1.1. hello_world.php


Look Out World






36  Глава 1. Знакомство с PHP

Сохраните содержимое листинга 1.1 в файле hello_world.php и откройте его в браузере. Результат показан на рис. 1.2.

Рис. 1.2. Результат выполнения hello_world.php

Команда PHP echo вставляет свой результат (строку "Hello, world!") в файл
HTML. В данном случае код PHP заключен в теги . Другие способы
размещения кода PHP описаны в главе 2.

Страница конфигурации
Функция PHP phpinfo() строит страницу HTML с подробной информацией
об установке и текущей настройке PHP. В частности, из этой страницы можно узнать, установлены ли у вас конкретные расширения или изменялся ли
файл php.ini.
В листинге 1.2 приведена полная страница, полученная при выполнении
phpinfo().
Листинг 1.2. Использование phpinfo()


На рис. 1.3 показана первая часть вывода листинга 1.2.

Формы
Листинг 1.3 создает и обрабатывает форму. Когда пользователь отправляет данные формы, информация, введенная в поле name, возвращается этой странице
действием формы $_SERVER['PHP_SELF']. Код PHP проверяет поле name, и если
оно обнаружено, выводит приветствие.

Краткий обзор PHP  37

Рис. 1.3. Часть вывода phpinfo()
Листинг 1.3. Обработка формы (form.php)


Personalized Greeting Form