Локхарт Дж. Современный PHP. Новые возможности и передовой опыт

Издательство: ДМК-Пресс
Автор: Локхарт Дж.
ISBN: 978-5-97060-184-6
Страниц: 304
Язык: Русский
Год издания: 2016

 
 
 

Описание книгиСодержаниеДополнительно

Книги по IT. РНР представляет собой объектно-ориентированный полнофункциональный язык с регулярно расширяющимися библиотеками. В издании автор раскрывает обновленные средства языка, знакомя читателя с современными методами разработки приложений, обеспечением безопасности, работой с БД, отладкой, тестированием и развертыванием. Руководство будет полезно программистам PHP разного уровня подготовки.

Об авторе 13
Предисловие 14
Что нужно знать об этой книге 14
Структура книги 15
Соглашения, принятые в этой книге 16
Использование примеров кода 16
ЧАСТЬ I.
Особенности языка 19
Глава 1. Новый РНР 20
Прошлое 20
Настоящее 21
Будущее 23
Глава 2. Особенности 25
Пространства имен 25
Зачем нужны пространства имен 2В
Объявление 28
Импорт и псевдонимы 30
Полезные советы 32
Интерфейсы 34
Трейты 39
Зачем нужны трейты 39
Как создать трейт 41
Как использовать трейт 43
Генераторы 44
Создание генератора 45
Использование генератора 46
Замыкания 48
Создание 49
Прикрепление состояния 50
Расширение Zend OPcache 53
Включение расширения Zend OPcache 54
Настройка расширения Zend OPcache 55
Использование расширения Zend OPcache 56
Встроенный HTTP-сервер 56
Запуск сервера 57
Настройка сервера 57
Сценарии маршрутизации 58
Обнаружение встроенного сервера 58
Недостатки 59
Что дальше 59
ЧАСТЬ II.
Передовые технологии 61
Глава 3. Стандарты 62
PHP-FIG приходит на помощь 63
Совместимость фреймворков 64
Интерфейсы 64
Автозагрузка 64
Стиль 65
Что такое PSR? 65
PSR-1 : Базовый стиль оформления кода 66
PSR-2: Строгий стиль оформления кода 68
PSR-3: Интерфейс журналирования 73
Создание компонента журналирования PSR-3 73
Использование компонента журналирования PSR-3 74
PSR-4: Автозагрузка 75
Почему автозагрузка так важна 76
Модель автозагрузки PSR-4 77
Как написать автозагрузчик PSR-4 (и почему этого делать не нужно)…. 78
Глава 4. Компоненты 80
Почему надо использовать компоненты? 80
Что представляют собой компоненты? 81
Компоненты и фреймворки 83
Не все фреймворки плохи 84
Использование инструмента, соответствующего задаче 85
Поиск компонентов 85
Магазин 86
Выбор 87
Оставьте отзыв 88
Использование РНР-компонентов 88
Установка Composer 89
Как использовать Composer 90
Пример проекта 92
Composer и закрытые хранилища 96
Создание РНР-компонентов 98
Имена производителя и пакета 98
Пространства имен 99
Организация файловой системы 99
Файл composer.json 100
Файл README 103
Реализация компонента 103
Управление версиями 106
Размещение на сайте Packagist 106
Использование компонента 107
Глава 5. Передовой опыт 109
Санирование и проверка ввода, и экранирование вывода 110
Санирование ввода 110
Проверка данных 114
Экранирование вывода 115
Пароли 116
Не храните пароли в открытом виде 116
Не ограничивайте пароли ваших пользователей 116
Не отправляйте пароли пользователей по электронной почте 117
Хеширование паролей пользователей с помощью bcrypt 117
Программный интерфейс хеширования паролей 119
Программный интерфейс хеширования паролей для РНР < 5.5.0 124
Даты, время и часовые пояса 125
Установка часового пояса по умолчанию 125
Класс DateTime 125
Класс Datelnterval 127
Класс DateTimeZone 128
Класс DatePeriod 129
Компонент nesbot/carbont 130
Базы данных 131
Расширение PDO 131
Подключение базы данных и DSN 131
Параметризованные запросы 134
Результаты запроса 137
Транзакции 139
Многобайтовые строки 143
Кодировка символов 144
Отображение данных в кодировке UTF-8 145
Потоки данных 145
Обертки потоков 146
Контекст потока 150
Фильтры потоков 150
Пользовательские фильтры потоков 153
Ошибки и исключения 156
Исключения 157
Обработчики исключений 161
Ошибки 162
Обработчики ошибок 164
Ошибки и исключения в ходе разработки 166
Эксплуатация 168
ЧАСТЬ III.
Развертывание, тестирование и настройка 171
Глава 6. Хостинг 172
Разделяемые серверы 172
Виртуальный выделенный сервер 173
Выделенный сервер 174
PaaS 175
Выбор тарифного плана хостинга 176
Глава 7. Комплектование 177
Наша цель 178
Настройка сервера 178
Первый вход 178
Обновление программного обеспечения 179
Непривилегированный пользователь 180
SSH-аутентификация с помощью парных ключей 181
Отключение парольной аутентификации и запрет входа
пользователя root 183
PHP-FPM 184
Установка 184
Глобальная конфигурация 185
Настройка пулов 186
nginx 189
Установка 190
Виртуальный хост 190
Автоматизация комплектования 193
Делегирование комплектования 194
Дополнительные материалы 194
Что дальше 195
Глава 8. Настройка 196
Файл php.ini 196
Память 197
Zend OPcache 198
Выгрузка файлов 201
Максимальное время выполнения 202
Обслуживание сеансов 203
Буферизация вывода 204
Кэш Realpath 204
Что дальше 205
Глава 9. Развертывание 206
Управление версиями 206
Автоматизация развертывания 207
Сделайте развертывание простым 207
Сделайте развертывание предсказуемым 207
Сделайте развертывание обратимым 207
Capistrano 207
Как это работает 208
Установка 208
Настройка 209
Аутентификация 211
Подготовка удаленного сервера 211
Обработчики Capistrano 212
Развертывание приложения 213
Откат к предыдущей версии приложения 213
Дополнительные материалы 213
Что дальше 213
Глава 10. Тестирование 214
Почему мы тестируем? 214
Когда мы тестируем? 215
Перед 215
В процессе 215
После 216
Что мы тестируем? 216
Как мы тестируем? 216
Модульное тестирование 216
Разработка через тестирование (TDD) 217
Разработка, основанная на функционировании (BDD) 217
PHPUnit 219
Структура каталогов 219
Установка PHPUnit 220
Установка Xdebug 221
Настройка PHPUnit 222
Класс Whovian 223
Класс теста WhovianTest 224
Запуск тестов 227
Охват кода 228
Непрерывное тестирование с помощью Travis Cl 229
Установка 229
Запуск 230
Дополнительные материалы 231
Что дальше 231
Глава 11. Профилирование 232
Когда следует использовать профилировщик 232
Типы профилировщиков 233
Xdebug 233
Настройка 234
Включение 235
Анализ 235
XHProf 235
Установка 236
XHGUI 236
Настройка 237
Включение 237
Профилировщик New Relic 238
Профилировщик Blackfire 238
Дополнительные материалы 238
Что дальше 239
Глава 12. HHVM и Hack 240
HHVM 240
PHP в Facebook 241
Совместимость HHVM с Zend Engine 243
Будет ли HHVM правильным выбором для меня? 243
Установка 244
Настройка 245
Расширения 246
Мониторинг HHVM с помощью Supervisord 246
HHVM, FastCGI и Nginx 248
Язык Hack 250
Перевод с PHP на Hack 250
Что такое типы? 251
Статическая типизация 252
Динамическая типизация 253
Двойной подход языка Hack 254
Контроль типов в Hack 254
Режимы Hack 255
Синтаксис Hack 256
Структуры данных Hack 258
HHVM и Hack против РНР 259
Дополнительные материалы 261
Глава 13. Сообщество 262
Местная группа РНР-разработчиков 262
Конференции 262
Наставничество 263
Будьте в курсе 263
Сайты 263
Списки рассылок 263
Твиттер 263
Подкасты 263
Юмор 264
Приложение А. Установка РНР 265
Linux 265
Менеджеры пакетов 265
Ubuntu 14.04 LTS 266
CentOS 7 268
МАМ P 270
Homebrew 273
Сборка из исходных текстов 277
Получение исходного кода 278
Windows 284
Скомпилированные файлы 285
WAMP 285
Zend Server 286
Приложение Б. Локальная среда разработки 287
VirtualBox 288
Vagrant 289
Команды 289
Боксы 290
Инициализация 290
Комплектование 291
Синхронизация каталогов 292
Быстрый старт 293
Предметный указатель 295
Об обложке 303