Обычно я в обзорах делаю мини-пересказ всех глав, но, пожалуй, не в этом случае. Здесь я ограничусь беглым изложением 10 частей, объединив все главы той или иной части в единое описание. После чего, в самом конце, напишу своё мнение о книге и постараюсь выделить её плюсы и минусы.
Основы веб-программирования
Вообще говоря, эта книга не только о PHP, но и о вебе, об интернете. В принципе, язык PHP практически невозможно представить без интернета — скажем, как прикладную десктопную программу, мобильное приложение или драйвер для ОС. Поэтому авторы книги начинают издалека. Например, здесь разбираются такие понятия, как TCP/IP, сервер, провайдер, хостинг, HTML-документ, порт и многое другое. Объясняется работа с методами GET и POST, идёт беглое знакомство с HTML (в основном с формами), CGI и встроенным веб-сервером PHP.
Основные языка PHP
Раздел состоит из 8 глав и полностью посвящён базовым концепциям языка. Тем, кто знакомится с языками программирования через книги, будет более чем понятно, о чём идёт речь: переменные, типы данных, операции, условные операторы, циклы и тому подобное. Из не совсем привычного здесь — пожалуй, обработка данных, присланных с форм, а также генераторы. Кстати, функции также разобраны именно здесь.
Стандартные функции PHP
PHP имеет огромное количество встроенных функций для работы с разными типами данных, покрывающих самые разнообразные случаи. Часть этих функций, к сожалению, к нашему времени даже разработчиками языка уже не рекомендуется к использованию. Тем не менее, кто не хочет лезть в официальную документацию (а я всё же считаю, что именно она является первоисточником и содержит полный перечень функций), тот может ознакомиться с перечнем, предложенным авторами книги. Тем более что здесь собраны наиболее популярные и часто используемые функции. Они разбиты по группам, где каждая группа — это отдельная глава, так что мне будет проще перечислить названия глав:
- Строковые функции
- Работа с массивами
- Математические функции
- Работа с файлами и каталогами
- Права доступа и атрибуты файлов
- Запуск внешних программ
- Работа с датой и временем
- Основы регулярных выражений
Основы объектно-ориентированного программирования
Несмотря на то, что объём текста около 100 страниц, здесь практически нет долгой и нудной теории ООП. Материал подразумевает, что вы уже немного знакомы с этой концепцией. Погружение в ООП в этой книге, как и во многих других, можно назвать плавным, но при этом уже с первых страниц встречается код на PHP. Затронутые темы ничем не отличаются от стандартных тем ООП: создание объектов, конструкторы, деструкторы. Кстати, при обсуждении деструкторов затронута тематика сборки мусора и циклических ссылок.
Далее идут модификаторы доступа (public, protected, private), ключевые слова this, self, сериализация объектов и магические методы. Не обошли авторы стороной и основные парадигмы объектно-ориентированного программирования, такие как наследование, полиморфизм, инкапсуляция. Затронуты темы интерфейсов, трейтов, абстрактных и виртуальных методов. Кстати, в RFC за последние годы было немало мелких улучшений и синтаксического сахара по ООП в PHP, но в текущей версии книги, разумеется, этого нет (возможно, в более свежих изданиях, если таковые есть, это дописано). В целом, эта часть проработана хорошо — разобраны тематики пространства имён, автозагрузчики классов. Последняя глава посвящена обработке ошибок.
Предопределенные классы в PHP
Если уж в PHP есть множество встроенных функций для работы с разными типами данных, то, разумеется, многие из них можно было бы объединить в классы для удобства работы. Возможно, если бы разработчики языка изначально так сделали — например, с функциями для работы со строками или массивами — это было бы ещё удобнее (в Laravel, например, есть подобные классы).
В нативном языке же в целые классы сгруппированы немного другие наборы функций. К ним можно отнести, например, работу с датой и временем, итерируемыми типами данных, рефлексией (работой с кодом), файлами и каталогами и др.
Работа с сетью в PHP
Здесь мы снова возвращаемся к началу книги и затрагиваем тематику работы с сетью, но уже средствами PHP. Рассматриваются установка и получение заголовков, работа с cookies и сессиями, работа с URL (фактически речь идёт о глобальных массивах PHP, а также некоторых стандартных функциях). Также в этой части книги показаны примеры работы с сокетами и почтой. Каждая из этих тем разобрана достаточно подробно (пожалуй, кроме сокетов).
Расширения PHP
Здесь речь идёт о расширениях, которые мы можем подключать и отключать в конфигурационном файле php.ini. Часть этих расширений встроена в ядро языка, часть же фактически является сторонней и требует дополнительных действий для установки и активации.
В этой части книги разобрано, как устанавливать такие расширения и как подключать их в разных операционных системах. Бегло разобраны некоторые директивы php.ini и показано, как, например, изменять размер допустимой памяти.
Одна из глав этого раздела уделена безопасности и фильтрации входных данных, которые необходимо принять и обработать — скажем, с пользовательских форм или URL-адреса. Примеры используют регулярные выражения, так что желательно иметь общее представление, что это такое.
Далее идут главы по работе с MySQL, изображениями, сетью и Memcached. По базам данных — небольшой вводный курс теории: от столбцов и строк до ключей и типов данных. Разобраны примеры работы с базой как через обычные SQL-запросы, так и через расширение PDO (собственно, неудивительно, что упоминание о PDO идёт именно в теме расширений — для этого и нужен был вводный курс по основам баз данных, на случай, если читатель с ними не знаком).
Что касается работы с изображениями — здесь рассмотрено расширение GD. Для работы с сетью использовалось расширение php-curl, а для Memcached — расширение php7-memcached.
Библиотеки
Несколько глав, в которых рассказывается о том, что такое Composer (а также как его установить и как с ним работать), что такое Packagist и где искать сторонние библиотеки. В конце разобрано, как самому создать библиотеку, которой могли бы пользоваться другие. Ну а чтобы будущий компонент соответствовал ряду общепринятых требований и стандартов, авторы знакомят читателя с PSR.
Приемы программирования на PHP
Одна из самых неоднозначных частей, состоящая из маленьких глав, которые призваны на реальных примерах показать, как можно работать с кодом. Среди таких примеров: работа с XML, с формами (которая уже неоднократно поднималась, только здесь — с загрузкой файлов), установка редиректов, работа с HTML и некоторые другие, не связанные между собой темы.
Развертывание
Под словом «развёртывание» не стоит понимать современные CI/CD-решения. Здесь скорее речь идёт об установке Git, подключении по SSH, а также установке некоторых прочих инструментов, необходимых для полноценной работы с PHP, если вы задумали написать что-то большее, чем просто скрипты. В частности — установка базы данных, веб-сервера и виртуальной машины.
Заключение
Плюсы
Очень подробная книга, которую не скучно читать и которая сопровождается огромным количеством примеров и вставок кода. По каждой тематике есть расширенное описание. Я бы сказал, что эту книгу можно смело ставить на второе место по информативности и полезности информации — после официальной документации. Как по мне, это самая подробная книга про PHP, которую мне доводилось видеть.
Минусы
Книга не просто большая — она огромная. Многие, возможно, так и не дойдут до финиша. К тому же, некоторые материалы уже устарели (впрочем, надеюсь, авторы следят за этим и выпускают обновлённые версии книги).