Сообщений 0 Оценка 0 [+1/-0] Оценить |
НАЗНАЧЕНИЕ ЭТОЙ КНИГИ - сделать из читателя высококвалифицированного специалиста по РНР-программированию. Быть высококвалифицированным специалистом не означает в совершенстве знать синтаксис и особенности языка (хотя такие знания весьма этому способствуют), важно уметь эффективно использовать язык для решения появившихся проблем. После прочтения книги к читателю придет глубокое понимание сильных и слабых сторон РНР, а также прояснятся оптимальные пути использования языка для решения проблем как внутри, так и вне Web-среды.
В книге собраны идеи, описаны основные проблемы, а в качестве примеров использованы конкретные случаи. Как гласит пословица: "Дай человеку рыбу, и он будет сыт один день. Научи его ловить рыбу, и он будет сыт до конца жизни". Цель книги - дать читателю инструмент для решения любой проблемы и умение выбирать правильный инструмент для работы.
По мнению автора, учиться легче всего на примере, поэтому книга полна практических примеров, что обеспечивает реализацию всех обсуждаемых идей. Примеры не слишком полезны без контекста, поэтому все коды в книге настоящие, решающие реальные задачи. Здесь нет примеров с названиями таких классов, как Foo и Bar, примеры взяты из настоящих открытых проектов, чтобы читатель мог видеть идеи в реальном исполнении.
Когда в 1999 году автор стал профессионально программировать на РНР, этот язык только начинал становиться чем-то большим, чем язык сценариев для любителей. То было время РНР-4, и благодаря первой Zend Engine PHP-код стал выполняться быстрее, а сам язык стал более стабильным. Разработка РНР также возрастала экспоненциально, но использовать PHP на крупных коммерческих Web-сайтах все еще было трудно. Эта трудность в основном объяснялась двумя причинами:
Ни один из этих аргументов не выдерживает никакой критики. РНР не является больше связующим языком, используемым любителями-энтузиастами; он стал мощным языком сценариев и идеальным инструментом для решения проблем, возникающих в Web-среде.
Чтобы использоваться в коммерческих приложениях, язык программирования должен отвечать следующим критериям:
Первый критерий - быстрое создание прототипов - сильная сторона РНР с момента его появления. Принципиальная разница между Web-проектом и другим программным проектом заключается в том, что в Web-среде продукт доставляется пользователю едва ли не бесплатно. При поставке коробочного программного продукта даже минимальная ошибка означает, что испорчены тысячи CD с ошибочным кодом. Исправление ошибки связано с необходимостью сообщить всем пользователям о том, что она исправлена, а затем заставить их загрузить и применить данное исправление. Исправление ошибки в Web-проекте будет действовать уже для следующего обновления пользователем данной страницы. Это свойство позволяет отлаживать Web-приложения, используя гибкую методику с частым выпуском версий.
Вообще, языки сценариев идеально подходят для гибких продуктов, так как позво ляют быстро формулировать и тестировать новую идею без прохождения полного цикла компиляции, компоновки, тестирования и отладки. РНР особенно удобен для этого, потому что имеет пологую кривую обучения и позволяет легко привлекать к проектам разработчиков с минимальным опытом.
РНР 5 также полностью включает в себя все эти идеи. Как видно из данной книги, новая объектная модель РНР обеспечивает устойчивую и стандартную объектно-ориентированную поддержку. РНР является быстрым и масштабируемым, благодаря обоим этим качествам можно использовать любые программные стратегии и легко перенаправлять критические порции бизнес-логики низкоуровневым языкам. РНР предоставляет значительное количество расширений для взаимодействия с другими службами - от серверов баз данных до SOAP. Наконец, РНР обладает наиболее важным признаком языка: расширяемостью. Если язык не предусматривает необходимой функции или возможности, то можно самостоятельно добавить соответствующую поддержку.
Книга состоит из пяти самостоятельных частей. Хотя она разработана таким образом, что читатель может легко перейти к нужной главе, рекомендуется прочитать книгу от начала до конца, так как многие примеры строятся по нарастающей от главы к главе.
Книга построена на естественной последовательности - сначала обсуждается, как написать хорошую программу на РНР, затем рассматриваются специфические методики, регулировка производительности, а в конце - расширение языка. Такой формат базируется на представлении автора о том, что основной обязанностью профессионального программиста является написание рабочей программы и что легче создать хорошую программу с первого раза, чем исправлять плохую.
Глава 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 представляет руководство по созданию основания кода, которое является управляемым, гибким и легко совмещается с другими проектами.
Глава 9. Поверхностная настройка производительности
Использование стратегии кэширования, несомненно, является наиболее эффективным путем увеличения производительности и масштабируемости приложения. В главе 9 исследуются внешние по отношению к PHP стратегии кэширования, также глава включает информацию о кэшировании промежуточного кода и прокси-кэшировании.
Глава 10. Кэширование данных
В главе 10 обсуждаются пути внедрения стратегий кэширования в РНРкод. Обсуждается, как и когда интегрировать кэширование в приложение, создание полнофункциональных систем кэширования на основе нескольких серверов хранения данных.
Глава 11. Повторное использование вычислений
В главе 11 описано повышение эффективности отдельных алгоритмов и процессов с помощью кэширования промежуточных данных. В данной главе сформулирована и рассматривается на практических примерах общая теория, лежащая в основе повторного использования вычислений.
Глава 12. Взаимодействие с базами данных
Базы данных являются основным компонентом практически каждого динамического работающего Web-сайта. В главе 12 основное внимание уделено стратегиям объединения РНР и систем баз данных.
Глава 13. Аутентификация пользователей и безопасность сеансов
В главе 13 рассматриваются методы управления аутентификацией пользователя и организация защиты клиент-серверных соединений. Основное внимание в данной главе уделено хранению зашифрованной информации сеансов в cookie-файлах, а так же полной реализации системы единой регистрации.
Глава 14. Поддержка сеансов
В главе 14 продолжается обсуждение сеансов пользователя, в частности расширение Session и написание нестандартных обработчиков сеансов.
Глава 15. Создание распределенной среды
В главе 15 обсуждается, как создать масштабируемые приложения, которые выходят за пределы отдельной машины. Рассматриваются детали построения и управления кластером машин для рационального и эффективного управления кэшированием и системами баз данных.
Глава 16. RPC: взаимодействие с удаленными службами
Web-службы- неологизм для обозначения служб, которые облегчают обмен информацией между машинами через Web. Глава посвящена двум наиболее распространенным Web-протоколам: XMLRPC и SOAP.
Глава 17. Оценка производительности: тестирование приложения в целом
Эталонное тестирование приложения позволяет убедиться, что приложение может выдерживать трафик, для которого оно предназначено, а также идентифицировать компоненты, являющиеся потенциально узкими местами приложения. В главе 17 рассматриваются различные комплекты эталонного тестирования, которые позволяют оценить производительность и стабильность приложения.
Глава 18. Профилирование
После использования методик эталонного тестирования для идентификации крупномасштабных потенциальных "бутылочных горлышек" в приложении можно использовать инструменты профилирования для выделения специфических проблемных участков в программе. В главе 18 обсуждается принцип работы и необходимость профилирования, а также приведены подробные учебные материалы по ис пользованию профайлера APD (Advanced PHP Debugger) для проверки кода.
Глава 19. Сравнительное тестирование производительности: оценка блоков кода и функций
Невозможно сравнить два фрагмента кода, не оценив тщательно их различия. В главе 19 рассматриваются методики измерения, а также внедрение и оценка не стандартных тестовых комплектов.
Глава 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] Оценить |