PHP. Объекты, шаблоны и методики программирования [5-е изд.] 9785907144545

577 51 52MB

Russian Pages 736 с. [738] Year 2019

Report DMCA / Copyright

DOWNLOAD FILE

PHP. Объекты, шаблоны и методики программирования [5-е изд.]
 9785907144545

Table of contents :
Содержание
Об авторе
О техническом рецензенте
Благодарности
Введение
От издательства
Часть I. Введение
Глава 1. Проектирование и сопровождение приложений на РНР
Проблема
РНР и другие языки
Об этой книге
Объекты
Шаблоны
Практика
Что нового в пятом издании книги
Резюме
Часть II. Объекты
Глава 2. РНР и объекты
Неожиданный успех объектов в РНР
Вначале был PHP/F1
Синтаксические удобства в версии РНР 3
Версия РНР 4 и незаметная революция
Изменения приняты: РНР 5
Восполнение пробела: РНР 7
Дебаты сторонников и противников объектов
Резюме
Глава 3. Основные положения об объектах
Классы и объекты
Первый класс
Несколько первых объектов
Установка свойств в классе
Работа с методами
Создание метода-конструктора
Аргументы и типы
Простые типы данных
Уточнение типов объектов
Наследование
Проблема наследования
Использование наследования
Управление доступом к классам: модификаторы public, private и protected
Методы доступа
Семейство классов ShopProduct
Резюме
Глава 4. Расширенные средства
Статические методы и свойства
Постоянные свойства
Абстрактные классы
Интерфейсы
Трейты
Проблема, которую позволяют решить трейты
Определение и применение трейтов
Применение нескольких трейтов
Сочетание трейтов с интерфейсами
Устранение конфликтов имен методов с помощью ключевого слова insteadof
Назначение псевдонимов переопределенным методам трейта
Применение статических методов в трейтах
Доступ к свойствам базового класса
Определение абстрактных методов в трейтах
Изменение прав доступа к методам трейта
Позднее статическое связывание: ключевое слово static
Обработка ошибок
Исключения
Завершенные классы и методы
Внутренний класс Error
Работа с методами-перехватчиками
Определение методов-деструкторов
Копирование объектов с помощью метода__clone ()
Определение строковых значений для объектов
Функции обратного вызова, анонимные функции и механизм замыканий
Анонимные классы
Резюме
Глава 5. Средства для работы с объектами
РНР и пакеты
Пакеты и пространства имен в РНР
Пути включения файлов
Автозагрузка
Функции для исследования классов и объектов
Поиск классов
Получение сведений об объекте или классе
Получение полностью уточненной строковой ссылки на класс
Получение сведений о методах
Получение сведений о свойствах
Получение сведений о наследовании
Вызов методов
Интерфейс Reflection API
Краткое введение в Reflection API
Время засучить рукава
Исследование класса
Исследование методов
Исследование аргументов методов
Применение интерфейса Reflection API
Резюме
Глава 6. Объекты и проектирование
Определение программного проекта
Объектно-ориентированное и процедурное программирование
Ответственность
Связность
Тесная связь
Ортогональность
Выбор классов
Полиморфизм
Инкапсуляция
Забудьте, как это делается
Четыре явных признака недоброкачественного кода
Дублирование кода
Класс, который слишком много знал
На все руки мастер
Условные операторы
Язык UML
Диаграммы классов
Диаграмма последовательностей
Резюме
Часть III. Шаблоны
Глава 7. Назначение и применение проектных шаблонов
Что такое проектные шаблоны
Краткий обзор проектных шаблонов
Название
Постановка задачи
Решение
Последствия
Формат “Банды четырех”
Причины для применения проектных шаблонов
Шаблоны определяют задачи
Шаблоны определяют решения
Шаблоны не зависят от языка программирования
Шаблоны определяют словарь
Шаблоны проверяются и тестируются
Шаблоны предназначены для совместной работы
Шаблоны способствуют удачным проектам
Шаблоны применяются в распространенных каркасах
РНР и проектные шаблоны
Резюме
Глава 8. Некоторые принципы действия шаблонов
Открытие шаблонов
Композиция и наследование
Проблема
Применение композиции
Развязка
Проблема
Ослабление связанности
Программируйте на основе интерфейса, а не его реализации
Меняющаяся концепция
Проблемы применения шаблонов
Шаблоны
Шаблоны для формирования объектов
Шаблоны для организации объектов и классов
Шаблоны, ориентированные на задачи
Промышленные шаблоны
Шаблоны баз данных
Резюме
Глава 9. Формирование объектов
Формирование объектов: задачи и решения
Шаблон Singleton
Проблема
Реализация
Выводы
Шаблон Factory Method
Проблема
Реализация
Выводы
Шаблон Abstract Factory
Проблема
Реализация
Выводы
Шаблон Prototype
Проблема
Реализация
Доведение до крайности: шаблон Service Locator
Блестящее одиночество: шаблон Dependency injection
Проблема
Реализация
Выводы
Резюме
Глава 10. Шаблоны для программирования гибких объектов
Структурирование классов для повышения гибкости объектов
Шаблон Composite
Проблема
Реализация
Выводы
Краткие выводы по шаблону Composite
Шаблон Decorator
Проблема
Реализация
Выводы
Шаблон Facade
Проблема
Реализация
Выводы
Резюме
Глава 11. Выполнение задач и представление результатов
Шаблон Interpreter
Проблема
Реализация
Трудности реализации шаблона interpreter
Шаблон Strategy
Проблема
Реализация
Шаблон Observer
Реализация
Шаблон Visitor
Проблема
Реализация
Трудности реализации шаблона visitor
Шаблон Command
Проблема
Реализация
Шаблон Null Object
Проблема
Реализация
Резюме
Глава 12. Шаблоны корпоративных приложений
Краткий обзор архитектуры
Шаблоны
Приложения и уровни
Нарушение правил с самого начала
Шаблон Registry
Уровень представления данных
Шаблон Front Controller
Шаблон Application Controller
Шаблон Page Controller
Шаблоны Template View И View Helper
Уровень логики приложения
Шаблон Transaction Script
Шаблон Domain Model
Резюме
Глава 13. Шаблоны баз данных
Уровень хранения данных
Шаблон Data Mapper
Проблема
Реализация
Результаты
Шаблон Identity Мар
Проблема
Реализация
Результаты
Шаблон Unit of Work
Проблема
Реализация
Результаты
Шаблон Lazy Load
Проблема
Реализация
Результаты
Шаблон Domain Object Factory
Проблема
Реализация
Результаты
Шаблон Identity Object
Проблема
Реализация
Результаты
Шаблоны Selection Factory и Update Factory
Проблема
Реализация
Результаты
Что теперь осталось от шаблона Data Mapper?
Резюме
Часть IV. Практика
Глава 14. Нормы надлежащей и порочной практики
Не кодом единым
Снова изобретаем колесо
Ведите себя хорошо
Дайте коду крылья
Стандарты
Технология Vagrant
Тестирование
Непрерывная интеграция
Резюме
Глава 15. Стандарты РНР
Зачем нужны стандарты
Рекомендованные стандарты РНР
Особенности рекомендованных стандартов PSR
На кого рассчитаны рекомендации стандартов PSR
Программирование в избранном стиле
Основные рекомендации стандарта PSR-1 по стилю программирования
Рекомендации стандарта PSR-2 по стилю программирования
Проверка и исправление исходного кода
Рекомендации стандарта PSR-4 по автозагрузке
Самые важные правила
Резюме
Глава 16. Создание и использование компонентов РНР средствами Composer
Назначение Composer
Установка Composer
Установка пакетов
Установка пакетов из командной строки
Версии пакетов
Поле require-dev
Composer и автозагрузка
Создание собственного пакета
Ввод сведений о пакете
Пакеты для конкретной платформы
Распространение пакетов через сайт Packagist
Работа с закрытыми пакетами
Резюме
Глава 17. Контроль версий средствами Git
Зачем нужен контроль версий
Установка Git
Использование онлайнового хранилища Git
Конфигурирование сервера Git
Создание удаленного хранилища
Подготовка хранилища для локальных пользователей
Предоставление доступа пользователям
Закрытие доступа к системной оболочке для пользователя git
Начало проекта
Клонирование хранилища
Обновление и фиксация изменений
Добавление и удаление файлов и каталогов
Добавление файла
Удаление файла
Добавление каталога
Удаление каталогов
Отметка выпуска
Разветвление проекта
Резюме
Глава 18. Тестирование средствами PHPUnit
Функциональные и модульные тесты
Тестирование вручную
Общее представление о PHPUnit
Создание контрольного примера
Методы с утверждениями
Тестирование исключений
Выполнение наборов тестов
Ограничения
Имитации и заглушки
Тесты достигают своей цели, когда завершаются неудачно
Написание веб-тестов
Реорганизация кода веб-приложения для тестирования
Простые веб-тесты
Общее представление о Selenium
Предупреждения относительно тестирования
Резюме
Глава 19. Автоматическое построение средствами Phing
Назначение Phing
Получение и установка Phing
Создание документа построения
Целевые задания
Свойства
Типы
Задачи
Резюме
Глава 20. Виртуальная машина Vagrant
Задача
Простейшая установка
Выбор и установка образа операционной системы в Vagrant
Монтирование локальных каталогов на виртуальной машине Vagrant
Подготовка
Настройка веб-сервера
Настройка сервера баз данных MySQL
Определение имени хоста
Краткие итоги
Резюме
Глава 21. Непрерывная интеграция
Что такое непрерывная интеграция
Подготовка проекта к непрерывной интеграции
Установка сервера Jenkins
Установка модулей, подключаемых к серверу Jenkins
Установка открытого ключа доступа к системе Git
Установка проекта
Первое построение проекта
Настройка отчетов
Автоматический запуск процессов построения проектов
Резюме
Часть V. Заключение
Глава 22. Объекты, шаблоны и практика
Объекты
Выбор
Инкапсуляция и делегирование
Развязка
Повторное использование кода
Эстетика
Проектные шаблоны
Преимущества шаблонов
Шаблоны и принципы проектирования
Практика
Тестирование
Стандарты
Контроль версий
Автоматическое построение
Непрерывная интеграция
Что упущено из виду
Резюме
Часть VI. Приложения
Приложение А. Дополнительные источники информации
Литература
Статьи в Интернете
Сайты
Приложение Б. Простой синтаксический анализатор
Сканер
Синтаксический анализатор
Предметный указатель

Polecaj historie