Оглавление
Введение 9
Благодарности 10
Глава 1. Введение в объектно-ориентированное программирование 11
1.1. Причины возникновения объектно-ориентированной технологии 11
1.2. Какая программа является объектно-ориентированной? 13
1.3. О важности обозначений 16
1.4. Терминология 18
1.5. Повторное использование кода 20
1.6. Недостатки объектно-ориентированного подхода 22
1.7. Объектно-ориентированное программирование в PHP 24
Глава 2. Объекты и классы 25
2.1. Объявление класса 25
2.2. Абстрактные типы данных. Создание объекта 28
2.3. Инкапсуляция. Спецификаторы доступа 30
2.4. Методы класса. Член $this 34
2.5. Динамическое создание методов и членов 43
2.6. Рекурсивные методы 46
2.7. Является ли переменная объектом? 47
2.8. Использование методов без объектов 49
2.9. Дамп объекта 51
2.10. Вложенные объекты 53
2.11. Массив объектов 57
2.12. Преобразование объекта в массив 62
2.13. Возвращение методом нескольких значений 67
2.14. Необязательные аргументы методов 70
2.15. Присваивание одного объекта другому 72
2.16. Сравнение объектов друг с другом 74
2.17. Уничтожение объекта 77
Глава 3. Специальные методы классов 80
3.1. Конструктор. Метод __construct() 81
3.2. Параметры конструктора 83
3.3. Закрытый конструктор 86
3.4. Деструктор. Метод __destruct() 88
3.5. Создание реальных объектов 92
3.6. Автозагрузка классов. Функция __autoload() 100
3.7. Проверка существования класса 101
3.8. Определение принадлежности объекта к классу 104
3.9. Аксессоры. Методы __set() и __get() 107
3.10. Проверка существования члена класса. Метод __isset() 113
3.11. Уничтожение члена класса. Метод __unset() 118
3.12. Динамические методы. Метод __call() 120
3.13. Проверка существования метода 123
3.14. Интерполяция объекта. Метод __toString() 127
3.15. Экспорт переменных. Метод __set_state() 130
Глава 4. Инкапсуляция, наследование, полиморфизм 136
4.1. Инкапсуляция 136
4.2. Наследование 142
4.3. Конструкторы, деструкторы и наследование 148
4.4. Спецификаторы доступа и наследование 153
4.5. Перегрузка методов 156
4.6. Определение имени базового класса 158
4.7. Полиморфизм 162
4.8. Файловая постраничная навигация 168
4.9. Постраничная навигация и поиск 174
4.10. Постраничная навигация для директории 178
4.11. Постраничная навигация для базы данных 183
4.12. Изменение формата постраничной навигации 190
4.13. Абстрактные классы 193
4.14. Абстрактные методы 195
Глава 5. Интерфейсы 200
5.1. Создание интерфейса 200
5.2. Интерфейсы и наследование классов 202
5.3. Реализация нескольких интерфейсов 204
5.4. Проверка существования интерфейса 205
5.5. Наследование интерфейсов 207
5.6. Реализует ли объект интерфейс? 209
Глава 6. Статические и константные элементы класса 213
6.1. Статические члены класса 213
6.2. Эмуляция транзакций при помощи статических членов 216
6.3. Наследование и статические члены 222
6.4. Статические методы класса 223
6.5. Константы класса 224
6.6. Предопределенные константы 225
6.7. Самоидентификация объектов 227
6.8. Final-методы класса 229
6.9. Final-классы 231
Глава 7. Клонирование и серилизация объектов 233
7.1. Клонирование объекта 233
7.2. Управление процессом клонирования. Метод __clone() 236
7.3. Клонирование вложенного класса 238
7.4. Серилизация объектов 241
7.5. Передача объектов через сессию 244
7.6. Сохранение объектов в СУБД MySQL 246
7.7. Управление серилизацией. Методы __sleep() и __wakeup() 248
7.8. Автоматическое сохранение объекта в СУБД MySQL 256
Глава 8. Обработка ошибок и исключения 264
8.1. Синтаксис исключений 265
8.2. Интерфейс класса Exception 267
8.3. Генерация исключений в функциях 271
8.4. Стек обработки исключительной ситуации 275
8.5. Генерация исключений в классах 277
8.6. Генерация исключений в иерархиях классов 281
8.7. Использование объекта класса Exception в строковом контексте 284
8.8. Создание собственных исключений 285
8.9. Создание новых типов исключений 289
8.10. Перехват исключений производных классов 291
8.11. Что происходит, когда исключения не перехватываются? 294
8.12. Вложенные контролируемые блоки 295
8.13. Повторная генерация исключений 298
Глава 9. Отражения 301
9.1. Иерархия классов отражения 301
9.2. Отражение функции. Класс ReflectionFunction 302
9.3. Отражение параметра функции. Класс ReflectionParameter 307
9.4. Отражение класса. Класс ReflectionClass 310
9.5. Отражение объекта. Класс ReflectionObject 317
9.6. Отражение метода класса. Класс ReflectionMethod 318
9.7. Отражение члена класса. Класс ReflectionProperty 320
9.8. Исключения механизма отражения 323
9.9. Отражение расширения. Класс ReflectionExtension 324
9.10. Вспомогательный класс Reflection 327
Глава 10. Набор классов. Framework 329
10.1. Требования к набору классов 332
10.2. HTML-форма и ее обработчик 334
10.3. Обработка исключительных ситуаций 340
10.4. Базовый класс field 343
10.5. Текстовое поле. Класс field_text 347
10.6. Класс form 352
10.7. Пример HTML-формы 357
10.8. Поле для пароля. Класс field_password 365
10.9. Поле для ввода английского текста. Класс field_text_english 368
10.10. Поле для ввода целых чисел. Класс field_text_int 369
10.11. Поле для ввода электронной почты. Класс field_text_email 372
10.12. Текстовая область. Класс field_textarea 374
10.13. Скрытое поле. Класс field_hidden 384
10.14. Скрытое поле для целых значений. Класс field_hidden_int 388
10.15. Флажок. Класс field_checkbox 395
10.16. Список. Класс field_select 398
10.17. Переключатели. Класс field_radio 403
10.18. Поле для загрузки файла на сервер. Класс field_file 408
10.19. Заголовок. Класс field_title 413
10.20. Параграф. Класс field_paragraph 418
10.21. Выбор даты и времени. Класс field_datetime 421
10.22. Обзор элементов управления 427
Глава 11. Создание системы управления сайтом (CMS) 428
11.1. Структура системы управления сайтом (CMS) 429
11.2. Общие файлы системы администрирования 435
11.3. Ограничение доступа к системе администрирования 440
11.4. Блок новости 456
11.4.1. База данных 456
11.4.2. Система администрирования 457
11.4.3. Система представления 476
11.5. Управления статьями и меню 482
11.5.1. База данных 483
11.5.2. Система администрирования 491
11.5.3. Система представления 531
Заключение 545
Приложение 1. Предопределенные классы 549
П1.1. Библиотека php_mysqli 549
П1.1.1. Создание базы данных 557
П1.1.2. Создание и заполнение таблицы 558
П1.1.3. Заполнение связанных таблиц 559
П1.1.4. Вывод данных 563
П1.1.5. Повторное чтение результирующей таблицы 564
П1.1.6. Количество строк в таблице 565
П1.1.7. Удаление данных 566
П1.1.8. Сортировка 568
П1.1.9. Параметризация SQL-запросов 571
П1.2. Класс dir 572
П1.3. Библиотека SPL 575
П1.3.1. Итераторы 576
П1.3.2. Интерфейс Iterator 578
П1.3.3. Класс DirectoryIterator 581
П1.3.4. Класс FilterIterator 583
П1.3.5. Класс LimitIterator 584
П1.3.6. Рекурсивные итераторы 585
Приложение 2
. Список функций для работы с классами и объектами 587
Приложение 3. Описание компакт-диска 590
Рекомендуемая литература 591
HTML, XML, CSS, JavaScript и Flash 593
PHP и Perl 596
СУБД MySQL 598
Интернет и Web-сервер Apache 599
Регулярные выражения 600
UNIX-подобные операционные системы 601
Методология программирования 603
Предметный указатель 605
4 Оглавление
7 Оглавление