Система Orphus

PHP 5 для профессионалов

Авторы: Эд Леки-Томпсон
Алек Коув
Стивен Новицки
Хьяо Айде-Гудман
Издательство: Диалектика-Вильямс, 2006
608 страниц

Материал предоставил: Издательство ''Вильямс''
Найти в магазинах
Купить в Озоне (604 руб.)
Купить в Books.Ru
Купить в Болеро (372 руб.)
Купить в OZ.by (Беларусь)
Купить в My-Shop.ru (422 руб.)

Аннотация

Содержание
О чем эта книга
Для кого предназначена эта книга
Что необходимо для работы с этой книгой
Приложения
Общая картина
Исходный код
Опечатки
Web-ресурс p2p.wrox.com
Об авторах
Эд Леки-Томпсон
Хеов Эйд-Гудман
Стивен Д. Новицки
Алек Кав

Аннотация

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

Содержание

Введение

Часть I. Основы разработки объектно-ориентированного программного обеспечения

Глава 1. Введение в объектно-ориентированное программирование
Что такое объектно-ориентированное программирование
Преимущества объектно-ориентированного подхода
Конкретный пример
Основные принципы и понятия ООП
Классы
Объекты
Наследование
Интерфейсы
Инкапсуляция
Изменения ООП в PHP 5
Резюме

Глава 2. Унифицированный язык моделирования UML
Определение требований
Интервьюирование клиента
Диаграммы прецедентов
Диаграммы классов
Моделирование предметной области
Отношения между классами
Реализация
Диаграммы видов деятельности
Диаграммы последовательностей
Диаграммы состояний
Диаграммы компонентов и развертывания
Резюме

Глава 3. Объектный подход в действии
Создание менеджера контактов
Диаграммы UML для адресной книги
Класс PropertyObject
Типы контактной информации
Класс DataManager
Классы Entity, Individual и Organization
Использование системы
Резюме

Глава 4. Шаблоны проектирования
Шаблон Composite
Реализация
Обсуждение
Шаблон Observer
Элементы управления
Обсуждение
Шаблон Decorator
Реализация
Использование шаблона Decorator
Обсуждение
Шаблон Facade
Шаблон Builder
Реализация
Обсуждение
Резюме

Часть II. Разработка повторно используемого набора объектов: простые служебные классы и интерфейсы

Глава 5. Класс Collection
Назначение класса Collection
Проектирование класса Collection
Основы класса Collection
Метод addItem()
Методы getItem() и removeItem()
Другие методы
Использование класса Collection
Реализация позднего инстанцирования
Обратные вызовы
Метод setLoadCallback() класса Collection
Использование класса Collection
Усовершенствование класса Collection
Резюме

Глава 6. Класс CollectionIterator
Интерфейс Iterator
Класс CollectionIterator
Интерфейс IteratorAggregate
Защита содержимого объекта Iterator с помощью оператора clone
Резюме

Глава 7. Класс GenericObject
Класс GenericObject
Когда нужно использовать класс GenericObject
Что позволяет делать класс GenericObject
Преимущества использования
Типичная реализация GenericObject
Встреча с предком
Взаимодействие класса GenericObject с базой данных
Методы и свойства класса GenericObject
Преимущества использования класса GenericObject
Класс GenericObjectCollection
Традиционная реализация
Когда традиционная реализация оказывается неудачной
Принципы, положенные в основу класса GenericObjectCollection
Исходный код класса GenericObjectCollection
Типичное использование класса GenericObjectCollection
Тестирование класса UserHome
Как это работает
Класс GenericObjectCollection: подведение итогов
Резюме

Глава 8. Уровни абстракции базы данных
Что такое уровень абстракции базы данных
Простая реализация
Конфигурационный файл
Установка соединения
Выборка данных
Изменение информации
Использование класса Database
Уровень абстракции PEAR DB
Подключение к базе данных с помощью класса DB
Извлечение информации
Другие полезные функции
Получение дополнительной информации
Завершенный уровень абстракции базы данных
Поддержка транзакций
Шаблон проектирования Singleton
Резюме

Глава 9. Интерфейс Factory
Шаблон проектирования Factory
Пример интерфейса Factory
Старый школьный подход
Применение интерфейса Factory
Использование интерфейса Factory на уровне абстракции базыданных
Многократное применение шаблона Factory
Усовершенствование существующих классов
Резюме

Глава 10. Управление событиями
Что такое события
Использование ООП для управления событиями
Проектное решение по управлению событиями
Реализация решения
Обеспечение безопасности
Остановитесь и подумайте
Резюме

Глава 11. Регистрация событий и отладка
Создание механизма регистрации событий
Запись в файл
Пример записи в файл
Класс Logger
Расширение класса Logger
Создание механизма отладки
Резюме

Глава 12. Протокол SOAP
SOAP и PHP 5
Расширение SOAP РНР 5
Создание SOAP_клиента
За кулисами
Обработка исключений в клиенте SOAP
Создание сервера SOAP
Резюме

Часть III. Разработка повторно используемого набора объектов: сложные (но не слишком служебные классы)

Глава 13. Модель, вид, контроллер
Знакомство с архитектурой MVC
Модель
Вид
Контроллер
Инфраструктура
MVC в Web_приложениях
MVC в языке PHP
Минимальный набор классов для реализации MVC
Знакомство с набором
Использование предложенного набора
Применение разработанного набора
Реальные шаблоны
Реализация шаблонов средствами PHP
Реализация шаблонов на основе пакета Smarty
Установка пакета Smarty
Использование пакета Smarty
Расширенные возможности пакета Smarty
Когда лучше использовать пакет Smarty, а не традиционные шаблоны
Резюме

Глава 14. Общение с пользователями
Для чего общаться
Причины для общения с пользователями
За пределами Web_браузера
Типы связи
Общие свойства взаимодействия
Свойства конкретных типов сообщений
Информация о получателе
Представление взаимодействия в виде иерархии классов
Класс Recipient: быстрая проверка объектного мышления
Класс Communication
Переписка с пользователями по электронной почте
Создание тестовой версии
Получение сообщения
Применение шаблонов
Использование MIME
Другие подклассы Communication
Передача SMS_сообщений
Факс
Резюме

Глава 15. Сеансы и аутентификация
Знакомство с сеансами
Краткий экскурс в историю протокола HTTP
Определение сеанса
Сохранение сеанса
Безопасность сеанса
Реализация сеансов в PHP
Сеансы в PHP
Ограничения базовых сеансов PHP
Создание класса аутентификации
Подключение механизма управления сеансами к базе данных
Знакомство с классом UserSession
Схема базы данных
Код класса UserSession.phpm
Код модульного теста для класса UserSession
Как работает класс UserSession
Использование класса UserSession
Резюме

Глава 16. Каркас для модульного тестирования
Методология и терминология
Разработка интерфейса класса
Создание пакета тестирования для класса
Реализация класса
Повторный запуск
Знакомство с PHPUnit
Установка PHPUnit
Использование PHPUnit
Тестовые классы
Тестовый пакет
Зачем беспокоиться?
Возвратное тестирование
Удобство использования каркаса
Гарантия качества
Упрощение функционального тестирования
Пример из жизни
Резюме

Глава 17. Конечные автоматы и файлы конфигурации
Знакомство с конечными автоматами
Простой конечный автомат: калькулятор для обратной польской записи
Теоретические реализации конечных автоматов
Реализация конечных автоматов на PHP
Пример калькулятора для обратной польской записи
Реальные примеры конечных автоматов
Пользовательские конфигурационные файлы
Использование PHP
Использование XML
Использование INI_файлов
Класс Config пакета PEAR
Рекомендации для работы с конфигурационными файлами
Резюме

Часть IV. Учебный пример: автоматизация работы торгового предприятия

Глава 18. Знакомство с проектом
Компания Widget World
Компания Widget World изнутри
Технический уровень
Финансовый уровень
Политический уровень
Разработчик
Действительно ли дело в технологии
Подход к разработке
Что это означает
Технология
Резюме

Глава 19. Методологии управления проектами
Выполните домашнее задание
Почему возникает новый проект
Для кого проект предназначен
Какую предысторию имеет проект
Каковы исходные условия
Разработка описания проекта
Формулировка бизнес_требований
Определение границ
График выполнения работ
Бюджет
Коммерческие условия
Планы на будущее
''Внешний облик'' приложения
Технология
Поддержка
Что делать дальше
Написание предложения
Предложение или счет
Предложение или спецификация
Кто должен участвовать в написании предложения
Когда следует двигаться дальше
Когда следует сказать ''нет''
Структурирование предложения
Выбор персонала
Менеджер проекта
Исполнительный директор
Главный архитектор
Разработчики и кодировщики
Разработчики клиентской части приложения
Главный дизайнер
Художники
Совмещение ролей
Организация работ
Роль заказчика
Резюме

Глава 20. Проектирование системы
Выбор процесса
Каскадный процесс
Спиральный процесс
Принятие решений
Общие рекомендации
Фаза разработки спецификации
Фаза проектирования
Карта страниц
Фаза реализации
Фаза тестирования
Передача проекта
Методология программирования
Разработка на основе тестирования
Экстремальное программирование
Управление изменениями
Модификация требований
Изменение требований после подписания спецификации
Конфликт из_за разницы толкования
Дефекты, обнаруженные клиентом
Резюме

Глава 21. Архитектура системы
Что такое системная архитектура
Почему это важно
Что нужно сделать
Содержание
Эффективная реализация требований
Хостинг, соединения, серверы и сеть
Надежность и избыточность
Поддержка
Безопасность
Проектирование среды
Хостинг и соединения
Вычисление параметров канала
Серверы
Сеть
Дополнительная память
Поддержка
Безопасность
Резюме

Глава 22. Разработка средства автоматизации торговли
Начало проекта: понедельник
Слушайте внимательно
Оценка трудоемкости реализации сценариев
Планирование процесса разработки
Начало работы
Деталиреализации сценария 9
Создание тестов
PHPUnit
Создание страницы регистрации
Следующий сценарий
Повторная оценка проекта
Чистка кода
Рефакторинг кода
Завершение итерации
Сценарий 14 - ''Сохранение данных при изменении недели''
Сценарий 15 - ''Еженедельное добавление данных в отчет о контактах с покупателями''
Отчет о командировочных расходах
Элемент командировочных расходов
Вычисление командировочных расходов за неделю
Последние штрихи
Дополнительные тесты для отчета о еженедельных расходах
Реализация класса еженедельного отчета о командировочных расходах
Окончательный отчет по командировочным расходам
Объекты_имитаторы
Резюме

Глава 23. Обеспечение качества
Основы анализа качества
Почему нужно ставить высокие цели
Что такое качество
Мера качества
Тестирование
Модульное тестирование
Функциональное тестирование
Тестирование нагрузки
Тестирование удобства использования
Отслеживание ошибок
Отслеживание ошибок с помощью системы Mantis
Несколько заключительных слов о системе Mantis
Резюме

Глава 24. Развертывание
Организация среды разработки
Сервер разработки
Поэтапная разработка
Среда поэтапного развертывания
Рабочая среда
Разработка баз данных
Процесс развертывания
Автоматическое извлечение данных из хранилища контроля версий
Утилита rsync
Синхронизация серверов с помощью утилиты rsync
Резюме

Глава 25. Разработка надежной системы генерации отчетов
Рабочие данные
Понимание потребностей заказчика
Управление запросами заказчика
Данные отчета
Разработка отчета
Архитектура генерации отчетов
Генерация отчетов в фоновом режиме
Страница Reports
Страница newreport
Сценарий обработки отчета
Обработка
Сценарии обработчиков
Страница Мои отчеты
Сценарии преобразования отчетов
Пример использования генератора отчетов
Визуализация
Резюме

Глава 26. Что дальше
Мотивация
Ваша карьера как разработчика
За пределами Web_приложений
Жизненный опыт
Академические навыки
Жизнь в социуме
Резюме

Часть V. Приложения

Приложение А. Зачем использовать контроль версий
Принципы контроля версий
Параллельное и исключающее управление версиями
Топология контроля версий
Программное обеспечение контроля версий
Microsoft Visual SourceSafe
CVS
RCS
Другие системы контроля версий
Дополнительные приемы контроля версий
Ветвление
Тегирование
Комментарии
Двоичные файлы
Резюме

Приложение Б. Интегрированные среды разработки для языка PHP
Выбор IDE
Zend Studio Client
Komodo
Другие IDE и редакторы
Резюме

Приложение В. Настройка производительности PHP
Проблемы производительности
Типы узких мест, связанных с производительностью
Причины недостаточной производительности
Поиск узких мест
Повышение производительности
Устранение временных задержек при работе с базой данных
Устранение узких мест в коде
Тестирование
Предупреждение неприятностей
Рекомендации по реализации высокопроизводительной архитектуры
Тестирование нагрузки
Резюме

Приложение Г. Практические советы по установке PHP
Введение в установку PHP
Выбор платформы
Лучший Web_сервер
Лучшая база данных
Инсталляция
Загрузка и установка СУБД PostgreSQL
Установка дополнительных библиотек
Установка PHP и Apache
Тестирование рабочего окружения
Когда использовать систему Windows
Модификация путей
Странные различия
Внешние библиотеки
Использование пакета PEAR
Резюме

Предметный указатель

О чем эта книга

Эта книга посвящена не только синтаксису и принципам разработки программных систем на языке PHP. Она поможет научиться быстро создавать качественное программное обеспечение. Большая часть материала относится не только к языку PHP. Многие приемы разработки напрямую можно перенести на другие традиционные языки высокого уровня. Поэтому полученные при изучении книги знания в любом случае помогут росту вашей карьеры.

PHP5 - динамично развивающийся язык, предназначенный не только для разработки Web-приложений. В книге вы узнаете, как язык PHP5 использовать для написания сервисов (служб), приложений общего назначения и сценариев командной строки.

Для кого предназначена эта книга

Эта книга охватывает серьезные технологии разработки на языке PHP, поэтому читатель должен владеть основами создания приложений. При этом он необязательно должен быть знаком с PHP5. Если вы до сих пор работали с PHP4, то этого вполне достаточно. В книге четко описаны различия между этими версиями.

Возможно, вы работаете разработчиком Web-приложений в большой компании и хотите перейти от использования технологии ASP, Java и других платформ к PHP. В этом случае книга поможет вам определить преимущества данной технологии.

Возможно, вы являетесь единственным Web-профессионалом в непрофильной компании, перед которым стоит задача реализации большого проекта. В этом случае вам придется определиться с выбором платформы разработки и курировать сам процесс.

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

Предполагается, что у читателя есть определенный опыт разработки на С++ или Java, тогда данная книга поможет вам глубже освоить принципы объектно-ориентированного проектирования и стать профессионалом по разработке Web-приложений на PHP.

Кем бы вы ни были, если вы знаете основы PHP и хотите получить новые знания не просто от профессионалов, а от людей, влюбленных в эту технологию, то эта книга для вас.

Что необходимо для работы с этой книгой

Приведем краткий перечень требований, которые необходимо удовлетворить для плодотворного изучения книги.

В идеале желательно иметь соединение с Интернет, поскольку в данной книге приводится множество адресов полезных Web-ресурсов.

Приложения

В приложениях (А, Б, В, Г) рассмотрены некоторые важные вопросы, которые не вошли в основной материал книги.

Здесь вы узнаете о средствах контроля версий и способах их использования в больших проектах, познакомитесь с различными средами разработки на языке PHP, узнаете, как настраивать серверное программное обеспечение, в том числе Apache и Linux.

Общая картина

Авторы надеются, что читатель внимательно протестирует приведенный в книге код, а также программы и проекты, на которые ссылается эта книга.

Ни один разработчик не работает в изоляции, поэтому вместе мы постараемся сделать этот мир немного лучше.

Исходный код

В процессе изучения этой книги вы можете вводить код вручную либо воспользоваться файлами с исходным кодом, которые можно найти по адресу http://www.wrox.com. Найдите на этом Web-узле данную книгу и щелкните на ссылке загрузки кода.

Поскольку названия многих книг очень схожи, для поиска лучше воспользоваться номером ISBN, для данной книги это 0-7645-7282-2.

Загрузив код, разархивируйте его. Затем можно приступить к его практическому использованию. Исходный код можно также загрузить по адресу http://www.wrox.com/dynamic/books/download.aspx.

Опечатки

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

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

Web-ресурс p2p.wrox.com

По адресу p2p.wrox.com вы найдете форумы, на которых книгу можно обсудить с авторами.

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

  1. Перейдите на страницу p2p.wrox.com и щелкните на ссылке регистрации.
  2. Ознакомьтесь с представленными соглашениями и подтвердите свое согласие с ними.
  3. Введите нужную информацию.
  4. Вы получите электронное сообщение с информацией о том, как верифицировать свою учетную запись и завершить процесс соединения с форумом.

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

Более подробная информация об этих форумах содержится в разделе часто задаваемых вопросов.

Об авторах

Эд Леки-Томпсон

Эд Леки-Томпсон (Ed Lecky-Thompson) - основатель профессиональной консалтинговой компании Ashridge New Media, расположенной в пригороде Лондона. Ему приходится решать как бухгалтерские вопросы, так и вопросы разработки программных систем. Он считает себя ярым приверженцем языка PHP, и именно его использует практически во всех своих проектах. Эд имеет более чем шестилетний опыт разработки коммерческого программного обеспечения и архитектуры корпоративных систем на различных платформах, в том числе на основе открытых технологий PHP и Perl в операционных системах Linux и FreeBSD.

Свободное время Эд посвящает быстрой езде по окрестностям Лондона.

Хеов Эйд-Гудман

Хеов Эйд-Гудман (Heow Eide-Goodman) - член сообществ NYPHP и LispNYC. Он использует язык PHP для повседневной разработки Web-узлов и служб, а также обеспечивает взаимодействие корпоративных приложений с базами данных SQL Server, InterBase/Firebird и MySQL.

Стивен Д. Новицки

Стивен Д. Новицки (Steven D. Nowicki) - директор департамента разработки программных систем в консалтинговой компании штата Калифорния. В настоящее время он занимается планированием ресурсов больших предприятий и системой управления контактами, насчитывающей более 300 тысяч строк объектно-ориентированного кода на языке PHP. Стивен имеет десятилетний опыт разработки крупномасштабных систем на большинстве известных в настоящее время платформ.

Алек Кав

Алек Кав (Alec Cove) имеет более чем десятилетний опыт разработки Web-приложений. Прежде чем открыть частную консалтинговую фирму, Алек работал главным архитектором в компании по разработке программного обеспечения, где занимался проектированием корпоративных систем и Web-служб. Область его интересов - объектно-ориентированное проектирование, шаблоны и генетическое программирование. В свободное от работы время Алек любит играть на гитаре, сочинять музыку и колесить по Нью-Йорку на велосипеде. Более подробную информацию о нем можно найти по адресу http://www.cove.org.