Сообщений 0    Оценка 0 [+1/-0]         Оценить  
Система Orphus

Профессиональное программирование на PHP

Автор: Джордж Шлосснейгл
Издательство: Вильямс, 2005
624 страниц

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

Аннотация

Содержание
РНР на предприятии
Структура и организация книги
Часть I. Методики реализации и разработки
Часть II. Кэширование
Часть III. Распределенные приложения
Часть IV. Производительность
Часть V. Расширяемость
Платформы и версии
Об авторе
От издательства
К сведению читателей

Аннотация

НАЗНАЧЕНИЕ ЭТОЙ КНИГИ - сделать из читателя высококвалифицированного специалиста по РНР-программированию. Быть высококвалифицированным специалистом не означает в совершенстве знать синтаксис и особенности языка (хотя такие знания весьма этому способствуют), важно уметь эффективно использовать язык для решения появившихся проблем. После прочтения книги к читателю придет глубокое понимание сильных и слабых сторон РНР, а также прояснятся оптимальные пути использования языка для решения проблем как внутри, так и вне Web-среды.

В книге собраны идеи, описаны основные проблемы, а в качестве примеров использованы конкретные случаи. Как гласит пословица: "Дай человеку рыбу, и он будет сыт один день. Научи его ловить рыбу, и он будет сыт до конца жизни". Цель книги - дать читателю инструмент для решения любой проблемы и умение выбирать правильный инструмент для работы.

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

Содержание

Введение

РНР на предприятии
Структура и организация книги
Платформы и версии

Часть I. Методики реализации и разработки

Глава 1. Стили кодирования

Выбор правильного стиля
Форматирование и компоновка кода
Именование
Предотвращение запутанности кода
Документация
Дополнительная литература

Глава 2. Объектно_ориентированное программирование с использованием типовых проектов

Введение в OO-программирование
Краткое введение в типовые проекты
Переопределение
Дополнительная литература

Глава 3. Обработка ошибок

Обработка ошибок
Обработка внешних ошибок
Исключения
Когда использовать исключения
Дополнительная литература

Глава 4. Реализация средствами PHP: шаблоны и Web

Smarty
Создание собственного решения на базе шаблонов
Дополнительная литература

Глава 5. Реализация средствами PHP: автономные сценарии

Введение в интерфейс командной строки PHP
Обработка ввода-вывода (I/O)
Разбор аргументов командной строки
Создание и управление дочерними процессами
Написание демонов
Объединение полученных знаний: службы мониторинга
Дополнительная литература

Глава 6. Блочное тестирование

Введение в блочное тестирование
Написание блочных тестов внутри и вне кода программ
Дополнительные функции в PHPUnit
Разработка на основе тестов
Блочное тестирование в Web-среде
Дополнительная литература

Глава 7. Управление средой разработки

Контроль изменений
Управление пакетами
Дополнительная литература

Глава 8. Проектирование API_интерфейса

Проектирование, обеспечивающее рефакторинг и расширяемость
Безопасное программирование
Дополнительная литература

Часть II. Кэширование

Глава 9. Поверхностная настройка производительности

Варианты языковой настройки
PHP-приложения с поддержкой кэш-памяти
Сжатие содержимого страниц
Дополнительная литература

Глава 10. Кэширование данных

Проблемы кэширования
Определение кэшируемых компонентов данных
Выбор стратегии: созданные вручную, или серийные классы
Буферизация вывода
Кэширование в памяти
DBM-кэширование
Кэширование на основе общей памяти
Кэширование на основе cookie-файлов
Интеграциякэширования в код приложения
Дополнительная литература

Глава 11. Повторное использование вычислений

Вводный пример: последовательности Фибоначчи
Кэширование повторно используемых данных внутри запроса
Кэширование повторно используемых данных между запросами
Повторное использование вычислений внутри PHP
Дополнительная литература

Часть III. Распределенные приложения

Глава 12. Взаимодействие с базами данных

Принципы действия баз данных и запросов
Модели доступа к базам данных
Настройка доступа к базе данных
Дополнительная литература

Глава 13. Аутентификация пользователей и безопасность сеансов

Простые схемы аутентификации
Регистрация пользователей
Поддержка аутентификации: персонификация пользователей
Единая регистрация
Дополнительная литература

Глава 14. Поддержка сеансов

Клиентские сеансы
Серверные сеансы

Глава 15. Создание распределенной среды

Что такое кластер?
Основы кластерных конструкций
Кэширование в распределенной среде
Масштабирование баз данных
Дополнительная литература

Глава 16. RPC: взаимодействие с удаленными службами

XML-RPC
SOAP
Сравнение SOAP и XML-RPC
Дополнительная литература

Часть IV. Производительность

Глава 17. Оценка производительности: тестирование приложения в целом

Пассивный поиск ''бутылочных горлышек''
Генераторы нагрузки
Дополнительная литература

Глава 18. Профилирование

Необходимые свойства PHP-профайлера
Многообразие профайлеров
Установка и использование APD
Пример трассировки
Профилирование более крупного приложения
Выявление общей неэффективности
Удаление излишней функциональности
Дополнительная литература

Глава 19. Сравнительное тестирование производительности: оценка блоков кода и функций

Основы эталонного тестирования
Создание эталонной тестовой нагрузки
Примеры эталонных тестов

Часть V. Расширяемость

Глава 20. Устройство PHP и Zend Engine

Как работает Zend Engine: коды операций и операционные массивы
Переменные
Функции
Классы
Жизненный цикл запроса в PHP
Дополнительная литература

Глава 21. Расширение PHP: часть I

Основы создания расширений
Пример: клиентская оболочка для Spread-службы
Дополнительная литература

Глава 22. Расширение PHP: часть II

Реализация классов
Написание нестандартных обработчиков сеансов
API потоков
Дополнительная литература

Глава 23. Написание SAPI_интерфейсов и расширение Zend Engine

SAPI-интерфейсы
Модификация и анализ Zend Engine
Домашнее задание

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

РНР на предприятии

Когда в 1999 году автор стал профессионально программировать на РНР, этот язык только начинал становиться чем-то большим, чем язык сценариев для любителей. То было время РНР-4, и благодаря первой Zend Engine PHP-код стал выполняться быстрее, а сам язык стал более стабильным. Разработка РНР также возрастала экспоненциально, но использовать PHP на крупных коммерческих Web-сайтах все еще было трудно. Эта трудность в основном объяснялась двумя причинами:

Ни один из этих аргументов не выдерживает никакой критики. РНР не является больше связующим языком, используемым любителями-энтузиастами; он стал мощным языком сценариев и идеальным инструментом для решения проблем, возникающих в Web-среде.

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

Первый критерий - быстрое создание прототипов - сильная сторона РНР с момента его появления. Принципиальная разница между Web-проектом и другим программным проектом заключается в том, что в Web-среде продукт доставляется пользователю едва ли не бесплатно. При поставке коробочного программного продукта даже минимальная ошибка означает, что испорчены тысячи CD с ошибочным кодом. Исправление ошибки связано с необходимостью сообщить всем пользователям о том, что она исправлена, а затем заставить их загрузить и применить данное исправление. Исправление ошибки в Web-проекте будет действовать уже для следующего обновления пользователем данной страницы. Это свойство позволяет отлаживать Web-приложения, используя гибкую методику с частым выпуском версий.

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

РНР 5 также полностью включает в себя все эти идеи. Как видно из данной книги, новая объектная модель РНР обеспечивает устойчивую и стандартную объектно-ориентированную поддержку. РНР является быстрым и масштабируемым, благодаря обоим этим качествам можно использовать любые программные стратегии и легко перенаправлять критические порции бизнес-логики низкоуровневым языкам. РНР предоставляет значительное количество расширений для взаимодействия с другими службами - от серверов баз данных до SOAP. Наконец, РНР обладает наиболее важным признаком языка: расширяемостью. Если язык не предусматривает необходимой функции или возможности, то можно самостоятельно добавить соответствующую поддержку.

Структура и организация книги

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

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

Часть I. Методики реализации и разработки

Глава 1. Стили кодирования

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

Глава 2. Объектно-ориентированное программирование с использованием типовых проектов

В главе 2 детализируются особенности объектно-ориентированного программирования РНР-5. Возможности показаны в контексте изучения общих типовых проектов. Представлен квалифицированный обзор как новых возможностей объектно-ориентированного программирования в РНР 5, так и идей, лежащих в основе принципа объектно-ориентированного программирования. Данная глава предназначена как для начинающих, так и для опытных программистов.

Глава 3. Обработка ошибок

Ошибки - жизненный факт. Глава 3 содержит процедурные и объектно-ориентированные методы обработки ошибок в РНР, особое внимание уделяется новым возможностям обработки ошибок на основе исключительных ситуаций.

Глава 4. Реализация средствами PHP: шаблоны и Web

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

Глава 5. Реализация средствами PHP: автономные сценарии

В настоящее время очень немногие Web-приложения не имеют серверного компонента. Возможность повторного использования имеющихся РНР-программ для на писания пакетных заданий, shell-сценариев и не Web-программ является решающей и делает язык полезным в условиях предприятия. В главе 5 обсуждаются основы написания самостоятельных сценариев и сетевых программ на РНР.

Глава 6. Блочное тестирование

Блочное тестирование является средством для проверки выполнения программой поставленных перед ней задач. Глава 6 показывает модульные тестирующие стратегии и примеры реализации гибких комплектов модульного тестирования с помощью phpUnit.

Глава 7. Управление средой разработки

Управление кодом не является главной задачей для большинства разработчиков, тем не менее это важно. В главе 7 рассматривается управление кодом в больших проектах, также глава содержит обширный вводный курс по использованию Concurrent Versioning System (CVS) для управления РНР-проектами.

Глава 8. Проектирование API-интерфейса

Глава 8 представляет руководство по созданию основания кода, которое является управляемым, гибким и легко совмещается с другими проектами.

Часть II. Кэширование

Глава 9. Поверхностная настройка производительности

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

Глава 10. Кэширование данных

В главе 10 обсуждаются пути внедрения стратегий кэширования в РНРкод. Обсуждается, как и когда интегрировать кэширование в приложение, создание полнофункциональных систем кэширования на основе нескольких серверов хранения данных.

Глава 11. Повторное использование вычислений

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

Часть III. Распределенные приложения

Глава 12. Взаимодействие с базами данных

Базы данных являются основным компонентом практически каждого динамического работающего Web-сайта. В главе 12 основное внимание уделено стратегиям объединения РНР и систем баз данных.

Глава 13. Аутентификация пользователей и безопасность сеансов

В главе 13 рассматриваются методы управления аутентификацией пользователя и организация защиты клиент-серверных соединений. Основное внимание в данной главе уделено хранению зашифрованной информации сеансов в cookie-файлах, а так же полной реализации системы единой регистрации.

Глава 14. Поддержка сеансов

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

Глава 15. Создание распределенной среды

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

Глава 16. RPC: взаимодействие с удаленными службами

Web-службы- неологизм для обозначения служб, которые облегчают обмен информацией между машинами через Web. Глава посвящена двум наиболее распространенным Web-протоколам: XMLRPC и SOAP.

Часть IV. Производительность

Глава 17. Оценка производительности: тестирование приложения в целом

Эталонное тестирование приложения позволяет убедиться, что приложение может выдерживать трафик, для которого оно предназначено, а также идентифицировать компоненты, являющиеся потенциально узкими местами приложения. В главе 17 рассматриваются различные комплекты эталонного тестирования, которые позволяют оценить производительность и стабильность приложения.

Глава 18. Профилирование

После использования методик эталонного тестирования для идентификации крупномасштабных потенциальных "бутылочных горлышек" в приложении можно использовать инструменты профилирования для выделения специфических проблемных участков в программе. В главе 18 обсуждается принцип работы и необходимость профилирования, а также приведены подробные учебные материалы по ис пользованию профайлера APD (Advanced PHP Debugger) для проверки кода.

Глава 19. Сравнительное тестирование производительности: оценка блоков кода и функций

Невозможно сравнить два фрагмента кода, не оценив тщательно их различия. В главе 19 рассматриваются методики измерения, а также внедрение и оценка не стандартных тестовых комплектов.

Часть V. Расширяемость

Глава 20. Устройство PHP и Zend Engine

Знание работы РНР изнутри поможет сделать правильный конструкторский вы бор с учетом сильных и слабых сторон данного языка. В главе 20 представлен технический обзор внутренней работы РНР, а также описано взаимодействие с РНР таких приложений, как Web-сервер, и выполнение сценариев в Zend Engine.

Глава 21. Расширение PHP: часть I

Глава 21 представляет собой подробное введение в написание РНР-расширений на языке C. Материал главы охватывает перенос имеющегося РНР-кода в C и написание расширений для обеспечения доступа РНР к сторонним C-библиотекам.

Глава 22. Расширение PHP: часть II

В главе 22 продолжается обсуждение, начатое в главе 21. Рассматриваются такие сложные темы, как создание классов в коде расширений и использование возможностей потоков и сеансов.

Глава 23. Написание SAPI-интерфейсов и расширение Zend Engine

В главе 23 рассматривается внедрение РНР в приложения и расширение Zend Engine для изменения базового поведения языка.

Платформы и версии

Основное внимание в книге уделено PHP-5, но, за исключением примерно 10% мате риала (новые объектно-ориентированные функции в главах 2 и 22, а также описание SOAP в главе 16), здесь нет ничего особо характерного для PHP-5. Книга написана об идеях и стратегиях, позволяющих сделать код быстрее, логичнее и надежнее. Читатели могут применить как минимум 50% приведенного в книге материала для усовершенствования кода, написанного на любом языке.

Весь код, приведенный в книге, написан и протестирован в Linux и должен работать без модификаций в Solaris, OS X, FreeBSD или любом другом клоне Unix. Большинство сценариев должно с минимальными изменениями работать в Windows, хотя некоторые из используемых утилит (особенно pcntl-утилиты, описанные в главе 5) могут быть не вполне переносимыми.

Об авторе

Джордж Шлосснейгл (George Schlossnagle) является главой компании "OmniTI Computer Consulting", которая находится в Мериленде и специализируется на разработке интенсивно функционирующих Web-сайтов и системах электронной почты. До прихода в OmniTI он управлял техническими операциями на нескольких крупных общественных Web-сайтах, где приобрел опыт применения РНР в условиях крупных промышленных сред. Джордж Шлосснейгл - известный специалист в области РНР, и результат его работы можно найти в ядре РНР, а также в репозиториях расширений PEAR и PECL.

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

От издательства

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

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

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

Email: info@williamspublishing.com

WWW: http://www.williamspublishing.com

Информация для писем:

из России: 115419, Москва, а/я 783

из Украины: 03150, Киев, а/я 152

К сведению читателей

Более подробная информация по данной книге и другим книгам издательства Sams Publishing представлена на сайте www.samspublishing.com. Чтобы найти нужную книгу, наберите ISBN (без дефиса) или название книги в строке поиска.

    Сообщений 0    Оценка 0 [+1/-0]         Оценить