КнигоПровод.Ru25.11.2024

/ИТ-книги

PHP 5. Профессиональное программирование — Гутманс Э., Баккен С., Ретанс Д.
PHP 5. Профессиональное программирование
Гутманс Э., Баккен С., Ретанс Д.
год издания — 2006, кол-во страниц — 704, ISBN — 5-93286-083-9, 0-131-47149-X, тираж — 3000, язык — русский, тип обложки — мягк., масса книги — 640 гр., издательство — Символ-Плюс
серия — High tech
КНИГА СНЯТА С ПРОДАЖИ
PHP 5 Power
Programming
Andi Gutmans, Stig Bakken,
Derick Rethans
PRENTICE HALL
Пер. с англ. А. Киселева

Уровень подготовки читателя: средний

Формат 70x100 1/16. Печать офсетная
ключевые слова — рнр, pear, xml, веб-сервис, веб-приложен, полиморфизм, интерфейс, cookies, mysql, sqlite, субд, zend, engine, xml-rpc, soap, sax, dom, simplexml, xslt

Каким бы сложным ни был ваш программный проект, вы сможете сделать его более мощным и совершенным, прочитав подробное руководство, написанное Энди Гутмансом, ведущим разработчиком РНР 5, Стигом Баккеном, создателем PEAR, и Дериком Ретансом, лидером группы тестирования РНР.
Авторы делятся своими уникальными знаниями и предлагают множество реалистичных примеров. Вы познакомитесь с особенностями новой объектной модели РНР 5, важнейшими шаблонами проектирования, улучшенной поддержкой XML и веб-сервисов. Только здесь вы найдёте высокоэффективные решения для разработки собственных веб-приложений, расширений, пакетов и сценариев командной строки. Рассматриваются: синтаксис и расширенные объектно-ориентированные возможности РНР — от свойств и методов до полиморфизма, интерфейсов и рефлексии; обработка ошибок; написание мощных веб-приложений (обработка ввода пользователя, работа с cookies, сессии); библиотека PEAR; интеграция с MySQL, SQLite и другими СУБД.
Те, кто перешёл на РНР недавно, смогут быстро адаптироваться к этому языку, а опытные PHP-программисты, знакомые с его простотой и удобством в работе, откроют для себя всю его необычайную мощь.

Энди Гутманс (Andy Gutmans) — один из создателей РНР 3 и всех последующих версий. Входит в состав основной группы разработки РНР. Один из самых уважаемых в мире РНР-разработчиков. В компании Zend Technologies Энди занимает пост вице-президента по технологии.
В 1997 г. Энди Гутманс вместе с Зивом Сураски (Zeev Suraski) переписал интерпретатор РНР, и в 1998 г. вышел РНР 3. Они разработали исходный движок Zend Engine, на котором был основан РНР 4. Энди возглавил работу над Zend Engine II для РН Р 5 и создал расширение ВС Math для РНР 4. В настоящее время он отвечает за выпуск релизов как для серии РНР 5.0.*, так и для РНР 5.1.
Стиг Баккен (Stig Bakken) также входит в основную команду разработчиков РНР. Создатель репозитория расширений и приложений для РНР (PEAR — PHP Extensions and Application Repository).
Дерик Ретанс (Derick Rethans) — опытный PHP-программист и лидер команды РНР QA.

В книге рассматриваются:

  • Синтаксис РНР 5 и его объектно-ориентированные возможности, начиная от свойств и методов и заканчивая полиморфизмом, интерфейсами и рефлексией
  • Четыре важнейших шаблона проектирования
  • Создание веб-приложений: обработка ввода пользователя, cookies, сессии и многое другое
  • Интеграция с MySQL, SQLite и другими СУБД
  • Обработка ошибок, не заметная для пользователя
  • Усовершенствованная поддержка языка разметки XML, включая синтаксический анализ и преобразования XSLT
  • Создание веб-приложений с помощью XML-RPC и SOAP
  • Библиотека PEAR: работа с репозиторием, основные пакеты и разработка собственных пакетов
  • Миграция с РНР 4 на РНР 5: вопросы совместимости, методы и практические примеры
  • Повышение производительности сценариев, советы и инструментальные средства для оптимизации кода
  • Использование расширений РНР для работы с файлами и потоками, регулярными выражениями, графикой, датой и временем
  • Создание собственных расширений и сценариев командной строки

ОГЛАВЛЕНИЕ

Предисловие17
 
Введение18
 
1. Что нового в РНР 526
1.1. Введение26
1.2. Возможности языка26
1.2.1. Новая объектно-ориентированная модель26
1.2.2. Новые объектно-ориентированные особенности28
1.2.3. Прочие нововведения в язык программирования32
1.3. Основные изменения в расширениях РНР33
1.3.1. XML и веб-сервисы33
1.4. Другие новшества в РНР 537
1.4.1. Новый диспетчер памяти37
1.4.2. Отказ от поддержки Windows 9537
1.5. Подведение итогов37
 
2. Основы языка программирования РНР 538
2.1. Введение38
2.2. Порядок внедрения кода РНР в HTML-страницы38
2.3. Комментарии39
2.4. Переменные40
2.4.1. Косвенные ссылки на переменные41
2.4.2. Действия с переменными41
2.4.3. Суперглобальные переменные43
2.5. Основные типы данных43
2.5.1. Целые числа44
2.5.2. Числа с плавающей точкой44
2.5.3. Строки44
2.5.4. Логический тип47
2.5.5. Специальный тип Null48
2.5.6. Ресурсы48
2.5.7. Массивы49
2.5.8. Константы55
2.6. Операторы56
2.6.1. Бинарные операторы57
2.6.2. Оператор присваивания57
2.6.3. Операторы сравнения58
2.6.4. Логические операторы59
2.6.5. Битовые операции60
2.6.6. Унарные операторы61
2.6.7. Оператор отрицания61
2.6.8. Операторы инкремента и декремента61
2.6.9. Операторы приведения типа62
2.6.10. Оператор подавления вывода сообщений об ошибках63
2.6.11. Единственный тернарный оператор63
2.7. Конструкции, управляющие ходом выполнения сценария64
2.7.1. Условные операторы64
2.7.2. Циклы66
2.7.3. Конструкции подключения внешних файлов70
2.8. Функции72
2.8.1. Пользовательские функции73
2.8.2. Область видимости функций73
2.8.3. Возврат величин по значению74
2.8.4. Возврат значений по ссылке75
2.8.5. Входные аргументы функций75
2.8.6. Статические переменные77
2.9. Подведение итогов77
 
3. РНР 5 — объектно-ориентированный язык программирования78
3.1. Введение78
3.2. Объекты79
3.3. Объявление класса80
3.4. Ключевое слово new и конструкторы81
3.5. Деструкторы81
3.6. Доступ к методам и свойствам с помощью переменной $this82
3.6.1. Ограничение области видимости свойств объекта83
3.6.2. Ограничение области видимости методов объекта84
3.6.3. Статические свойства85
3.6.4. Статические методы87
3.7. Константы класса88
3.8. Клонирование объектов88
3.9. Полиморфизм90
3.10. Зарезервированные имена parent и self92
3.11. Оператор instanceof93
3.12. Абстрактные методы и классы94
3.13. Интерфейсы96
3.14. Интерфейсы и наследование98
3.15. Финальные методы98
3.16. Финальные классы99
3.17. Метод __toString()99
3.18. Обработка исключений100
3.19. Функция __autoload()103
3.20. Определение типов входных аргументов функций105
3.21. Подведение итогов106
 
4. РНР 5 — дополнительные возможности ООП и
шаблоны проектирования
107
4.1. Введение107
4.2. Возможности перезагрузки107
4.2.1. Перехват обращений к свойствам и методам107
4.2.2. Виртуальные массивы110
4.3. Итераторы111
4.4. Шаблоны проектирования116
4.4.1. Шаблон стратегии116
4.4.2. Шаблон единственного экземпляра класса в приложении118
4.4.3. Шаблон фабрики классов119
4.4.4. Шаблон Observer (Наблюдатель)123
4.5. Рефлексия125
4.5.1. Введение125
4.5.2. Прикладной интерфейс рефлексии125
4.5.3. Примеры применения рефлексии127
4.5.4. Реализация шаблона делегирования с использованием рефлексии128
4.6. Подведение итогов130
 
5. Создание веб-приложений на языке РНР131
5.1. Введение131
5.2. Встраивание кода РНР в HTML-страницы132
5.3. Ввод пользователя134
5.4. Меры предосторожности при обработке данных,
получаемых от пользователя
136
5.4.1. Распространённые ошибки137
5.5. Способы защиты от атак139
5.5.1. Проверка ввода140
5.5.2. Проверка методом НМАС141
5.5.3. PEAR::Crypt_HMAC143
5.5.4. Входной фильтр146
5.5.5. Работа с паролями146
5.5.6. Обработка ошибок148
5.6. Cookies149
5.7. Сессии153
5.8. Отправка файлов на сервер156
5.8.1. Обработка присланных файлов157
5.9. Архитектура веб-приложения161
5.9.1. Всё в одном161
5.9.2. Один сценарий — одна функция163
5.9.3. Отделение логики от способа представления информации163
5.10. Подведение итогов165
 
6. Работа с базами данных в РНР 5166
6.1. Введение166
6.2. MySQL167
6.2.1. Сильные и слабые стороны MySQL167
6.2.2. Интерфейс для работы с MySQL168
6.2.3. Пример базы данных168
6.2.4. Соединение с базой данных169
6.2.5. Буферизованные и небуферизованные запросы171
6.2.6. Запросы171
6.2.7. Одновременное исполнение нескольких запросов172
6.2.8. Режимы выборки строк173
6.2.9. Параметризованные запросы174
6.2.10. Обработка BLOB-полей176
6.3. SQLite178
6.3.1. Слабые и сильные стороны SQLite178
6.3.2. Область применения179
6.3.3. Интерфейс для работы SQLite180
6.4. PEARDB196
6.4.1. Установка PEARDB196
6.4.2. «За» и «против» уровня абстракции196
6.4.3. Что подвергается абстрагированию197
6.4.4. Соединение с базой данных197
6.4.5. Исполнение запросов199
6.4.6. Выборка результатов202
6.4.7. Последовательности204
6.4.8. Обеспечение переносимости206
6.4.9. Абстрагирование кодов ошибок207
6.4.10. Прочие методы выборки результатов209
6.5. Подведение итогов211
 
7. Обработка ошибок212
7.1. Введение212
7.2. Типы ошибок213
7.2.1. Ошибки в программе213
7.2.2. Неопределённые символы215
7.2.3. Ошибки переносимости218
7.2.4. Ошибки времени исполнения222
7.2.5. Механизм обработки ошибок в РНР222
7.3. Механизм обработки ошибок в PEAR228
7.3.1. Класс PEAR_Error232
7.3.2. Обработка ошибок PEAR235
7.3.3. Режимы обработки ошибок PEAR236
7.3.4. Дополнительные способы обработки ошибок237
7.4. Исключения240
7.4.1. Что такое исключения240
7.4.2. try, catch и throw240
7.5. Подведение итогов242
 
8. XML и РНР 5243
8.1. Введение243
8.2. Терминология244
8.3. Синтаксический анализ XML246
8.3.1. SAX246
8.3.2. DOM250
8.4. SimpleXML255
8.4.1. Создание объекта SimpleXML255
8.4.2. Обзор объектов SimpleXML256
8.4.3. Сохранение объектов SimpleXML257
8.5. PEAR257
8.5.1. Класс XML_Tree258
8.5.2. Класс XML_RSS259
8.6. Преобразование XML262
8.6.1. XSLT262
8.7. XML и взаимодействие между различными системами266
8.7.1. XML-RPC267
8.7.2. SOAP274
8.8. Подведение итогов281
 
9. Основные расширения282
9.1. Введение282
9.2. Файлы и потоки283
9.2.1. Доступ к файлам283
9.2.2. Потоки ввода и вывода программ285
9.2.3. Стандартные потоки ввода-вывода288
9.2.4. Потоки со сжатыми данными289
9.2.5. Пользовательские потоки291
9.2.6. Потоки с доступом по URL292
9.2.7. Блокировка297
9.2.8. Переименование и удаление файлов298
9.2.9. Временные файлы299
9.3. Регулярные выражения299
9.3.1. Синтаксис300
9.3.2. Функции314
9.4. Работа с датами и временем321
9.4.1. Функции получения даты и времени321
9.4.2. Форматированный вывод даты и времени325
9.4.3. Преобразование строк в значения даты и времени333
9.5. Работа с изображениями335
9.5.1. Пример 1: защита от заполнения и посылки форм
автоматизированными средствами336
9.5.2. Пример 2: гистограмма341
9.5.3. Exif347
9.6. Кодировки и многобайтные символы349
9.6.1. Преобразование из одной кодировки в другую351
9.6.2. Дополнительные функции для работы
с наборами символов356
9.6.3. Языковые настройки360
9.7. Подведение итогов363
 
10. Библиотека PEAR365
10.1. Введение365
10.2. Основные понятия PEAR366
10.2.1. Пакеты366
10.2.2. Выпуски366
10.2.3. Нумерация версий367
10.3. Установка PEAR370
10.3.1. Установка из дистрибутива PHP в ОС UNIX/Linux370
10.3.2. Установка с помощью PHP Windows Installer371
10.3.3. go-pear.org372
10.4. Установка пакетов376
10.4.1. Работа с командой pear376
10.5. Параметры конфигурации379
10.6. Команды PEAR386
10.6.1. pearinstall386
10.6.2. pear list391
10.6.3. pearinfo392
10.6.4. pear list-all393
10.6.5. pear list-upgrades393
10.6.6. pearupgrade394
10.6.7. pear upgrade-all395
10.6.8. pear uninstall396
10.6.9. pearsearch396
10.6.10. pear remote-list397
10.6.11. pear remote-info398
10.6.12. pear download398
10.6.13. pearconfig-get399
10.6.14. pearconfig-set399
10.6.15. pearconfig-show399
10.6.16. Сокращения400
10.7. Пользовательские интерфейсы инсталлятора401
10.7.1. Интерфейс командной строки401
10.7.2. Графический интерфейс на базе библиотеки Gtk401
10.8. Подведение итогов404
 
11. Наиболее важные пакеты библиотеки PEAR405
11.1. Введение405
11.2. Пакеты для работы с базами данных405
11.3. Шаблоны405
11.3.1. Терминология406
11.3.2. HTML_Template_IT406
11.3.3. HTML_Template_Flexy410
11.4. Аутентификация415
11.4.1. Краткий обзор415
11.4.2. Пример: Auth и файл паролей415
11.4.3. Пример: Auth и DB416
11.4.4. Вопросы безопасности в Auth419
11.4.5. Вопросы масштабирования420
11.4.6. В заключение о пакете Auth421
11.5. Формы421
11.5.1. HTML_QuickForm421
11.5.2. Пример: форма регистрации422
11.5.3. Приём данных422
11.6. Кэширование422
11.6.1. Cache_Iite423
11.7. Подведение итогов424
 
12. Разработка компонентов PEAR425
12.1. Введение425
12.2. Стандарты PEAR425
12.2.1. Вопросы именования426
12.2.2. Выравнивание блоков кода428
12.3. Нумерация версий выпусков430
12.4. Окружение командной строки431
12.5. Основы432
12.5.1. Как и когда подключать файлы433
12.5.2. Обработка ошибок434
12.6. Сборка пакетов434
12.6.1. Пример пакета Hello World434
12.6.2. Сборка файла пакета436
12.6.3. Проверка437
12.6.4. Проведение тестовых испытаний438
12.7. Формат файла package.xml439
12.7.1. Информация о пакете439
12.7.2. Сведения о версии пакета441
12.8. Зависимости445
12.8.1. Элемент <deps>446
12.8.2. Элемент <dep>446
12.8.3. Типы зависимостей447
12.8.4. Причины, по которым следует избегать зависимостей448
12.8.5. Необязательные зависимости449
12.8.6. Примеры449
12.9. Подстановка строк450
12.9.1. Элемент <гер1асе>450
12.9.2. Примеры450
12.10. Включение исходных текстов на языке С451
12.10.1. Элемент <configureoptions>451
12.10.2. Элемент <configureoption>451
12.11. Публикация пакетов452
12.12. Процесс публикации пакетов PEAR452
12.13. Упаковка453
12.13.1. Анализ исходных текстов453
12.13.2. Генерация контрольных сумм MD5453
12.13.3. Обновление файла package.xml454
12.13.4. Создание архива455
12.14. Передача на сервер455
12.14.1. Передача пакета на сервер455
12.14.2. Конец!455
12.15. Подведение итогов455
 
13. Вопросы миграции456
13.1. Введение456
13.2. Объектная модель456
13.3. Передача объектов в функции457
13.4. Режим совместимости458
13.4.1. Приведение типов объектов458
13.4.2. Сравнение объектов459
13.5. Прочие изменения460
13.5.1. Присваивание значений переменной $this460
13.5.2. get_class()463
13.6. Е_STRICT463
13.6.1. Автоматическое создание объектов463
13.6.2. Модификаторы var и public464
13.6.3. Конструкторы464
13.6.4. Унаследованные методы464
13.6.5. Объявление класса перед его использованием465
13.7. Прочие проблемы совместимости465
13.7.1. Интерфейс командной строки465
13.7.2. Комментарии466
13.7.3. MySQL467
13.8. Изменения в функциях467
13.8.1. array_merge()467
13.8.2. strrpos() и strripos()468
13.9. Подведение итогов469
 
14. Производительность470
14.1. Введение470
14.2. Проектирование высокопроизводительных приложений471
14.2.1. Совет 1: осторожнее с информацией о состоянии приложения471
14.2.2. Совет 2: кэшируйте данные!472
14.2.3. Совет 3: главное — не переусердствовать!478
14.3. Тестирование производительности479
14.3.1. ApacheBench479
14.3.2. Siege480
14.3.3. Недостатки тестирования480
14.4. Профилирование с помощью пакета Zend Studio481
14.5. Профилирование с помощью APD483
14.5.1. Установка APD483
14.5.2. Анализ полученных данных484
14.6. Профилирование с помощью XDebug487
14.6.1. Установка XDebug487
14.6.2. Трассировка сценариев488
14.6.3. KCachegrind490
14.7. АРС492
14.8. ZPS493
14.8.1. Автоматическая оптимизация493
14.8.2. Кэширование скомпилированного кода494
14.8.3. Динамическое кэширование страниц496
14.8.4. Сжатие содержимого страниц499
14.9. Оптимизация кода500
14.9.1. Микротесты500
14.9.2. Переписывание кода РНР на языке С503
14.9.3. Сравнение процедурного
и объектно-ориентированного подходов503
14.10. Подведение итогов504
 
15. Введение в разработку расширений РНР505
15.1. Введение505
15.2. Начало506
15.2.1. Управление памятью511
15.2.2. Возврат значений из функций512
15.2.3. Завершение реализации self_concat()513
15.2.4. Итоги примера514
15.2.5. Расширения-обёртки вокруг библиотек
сторонних производителей515
15.2.6. Глобальные переменные525
15.2.7. Добавление параметров конфигурации в php.ini526
15.2.8. Макроопределения, управляющие ресурсами
в многопоточной среде528
15.3. Подведение итогов529
 
16. Создание сценариев командной строки на РНР530
16.1. Введение530
16.2. Сценарии командной строки на РНР531
16.2.1. Чем CLI отличается от CGI531
16.2.2. Окружение сценариев командной строки533
16.2.3. Разбор параметров командной строки535
16.2.4. Рекомендации538
16.2.5. Управление процессами540
16.2.6. Примеры544
16.3. Подведение итогов549
 
A. Каталог пакетов PEAR и PECL550
 
B. Краткий справочник по работе с phpDocumentor647
 
C. Краткое руководство пользователя Zend Studio674
 
Алфавитный указатель687

Книги на ту же тему

  1. PHP 5. — 2-е изд., перераб. и доп., Котеров Д. В., Костарев А. Ф., 2010
  2. Профессиональное программирование на PHP, Шлосснейгл Д., 2006
  3. PHP. Сборник рецептов, Скляр Д., Трахтенберг А., 2005
  4. Головоломки на PHP для хакера, Кузнецов М. В., Симдянов И. В., 2006
  5. PHP. Справочник, Хадсон П., 2006
  6. AJAX и РНР: разработка динамических веб-приложений, Дари К., Бринзаре Б., Черчез-Тоза Ф., Бусика М., 2006
  7. Профессиональное PHP программирование, 2-е издание, 2003
  8. PHP 4. Разработка Web-приложений (+ CD-ROM), Ратшиллер Т., Геркен Т., 2001
  9. Создаём динамические веб-сайты с помощью PHP, MySQL, JavaScript, CSS и HTML5. — 4-е изд., Никсон Р., 2017
  10. Изучаем SQL, Бьюли А., 2007
  11. MySQL. Сборник рецептов, Дюбуа П., 2004
  12. SQL: полное руководство, Грофф Д. Р., Вайнберг П. Н., 2000
  13. UNIX. Практическое пособие администратора, Торчинский Ф., 2003
  14. UNIX. Профессиональное программирование. — 2-е изд., Стивенс Р., Раго С., 2007
  15. Настройка производительности UNIX-систем, Мусумеси Д. П., Лукидес М., 2003
  16. Linux и UNIX: программирование в shell. Руководство разработчика, Тейнсли Д., 2001
  17. UML. Основы, Фаулер М., Скотт К., 2002
  18. Базы данных и UML. Проектирование, Мюллер Р. Д., 2002

© 1913—2013 КнигоПровод.Ruhttp://knigoprovod.ru