Наиболее полное руководство PHP-5

Наиболее полное руководство.

Котеров, А. Ф. Костарев. «PHP-5» БХВ-Петербург, 2008 год, 2-е изд., 1104 стр., ISBN 978-5-9775-0315-0; (25,6 мб. djvu)

Рассматриваются основы функционирования Web-серверов, сборка исполняемого модуля РНР в ОС UNIX, инструментарий Web-разработчика (в том числе утилиты отладки сценариев), синтаксис и стандартные функции языка. Приведено описание функций РНР для работы с массивами, файлами, СУБД MySQL, регулярными выражениями формата PCRE, графическими примитивами, почтой, сессиями и т. д. Особое внимание уделено новым возможностям языка по работе с XML-документами, объектно-ориентированному программированию, а также подходам к отделению РНР-кода от HTML-шаблонов сайта. Во втором издании добавлены главы про технологии AJAX и DbSimple, исправлены замеченные опечатки. Для Web-программистов.

Оглавление книги

Содержание.

ЧАСТЬ I. Основы WEB-Программирования

Глава 1. Принципы работы Интернета
Протоколы передачи данных
Семейство TCP/IP
Адресация в Сети
IP-адрес
Доменное имя
Порт
Установка соединения
Обмен данными
Терминология
Сервер
Узел
Порт
Сетевой демон, сервис, служба
Хост
Виртуальный хост
Провайдер
Хостинг-провайдер (хостер)
Хостинг
Сайт
НТМL-документ
Страница (или HTML-страница)
Скрипт, сценарий
Web-программирование
Взаимосвязь терминов
World Wide Web и URL
Протокол
Имя хоста
Порт
Путь к странице
Резюме

Глава 2. Интерфейс CGI и HTTP
Что такое CGI
Секреты URL
Заголовки запроса и метод GET
GET
POST
Content- Type
Host
User-Agent
Referer
Content-length
Cookie
Accept
Эмуляция браузера через telnet
Метод POST
URL-кодирование
Проблема русских кодировок
Что такое кодировка символов?
«Русский Apache» и кодировка
Пример сбойной конфигурации
Отключение автоматической перекодировки
Что такое формы и для чего они нужны?
Передача параметров «вручную»
Использование формы
Абсолютный и относительный пути к сценарию
Метод POST и формы
Кодировка входных данных
Резюме

Глава 3. CGI изнутри
Язык C
Работа с исходными текстами на C
Компиляция программ
Передача документа пользователю
Заголовки ответа
Заголовок кода ответа
«Подделывание» заголовка ответа
Content-type
Pragma
Location
Set-cookie
Date
Server
Примеры CGI-сценариев на C
Вывод бинарного файла
Передача информации CGI-сценарию
Переменные окружения
Передача параметров методом GET
Передача параметров методом POST
Расшифровка URL-кодированных данных
Формы
Тег <input> — различные поля ввода
Текстовое поле (text)
Поле ввода пароля (password)
Скрытое текстовое поле (hidden)
Независимый переключатель (checkbox)
Зависимый переключатель (radio)
Кнопка отправки формы (submit)
Кнопка сброса формы (reset)
Рисунок для отправки формы (image)
Тег <textarea> — многострочное поле ввода текста
Тег <select> — список
Списки множественного выбора (multiple)
HTML-сущности
Загрузка файлов
Формат данных
Тег загрузки файла (fde)
Что такое cookies и «с чем их едят»?
Установка cookie
Получение cookies из браузера
Пример программы для работы с cookies
Авторизация
Резюме

ЧАСТЬ II. Выбор и настройка инструментария

Глава 4. Установка Apache
Традиционный процесс отладки сайта
Локальный сервер
Почему Apache?
От слов к делу: установка Apache
Получение дистрибутива
Получение документации
Создание виртуального диска
Установка Apache
Настройка файла конфигурации Apache
Запуск и остановка
Тестирование и устранение неполадок
Дополнительные драйверы для Windows 95
Устранение неполадок
Проверка HTML-страниц
Проверка SSI
Виртуальные хосты Apache
Разновидности виртуальных хостов
Именование виртуальных хостов
Параметры хостов
Что получилось в итоге?
Apache для Windows и безопасность
Службы
Безопасность
Пример уязвимого скрипта
Заключительные слова о безопасности
Ссылки
Резюме
Глава 5. Установка РНР и MySQL
Установка РНР
Дополнительные драйверы для Windows 98
Получение документации
Состав дистрибутива РНР
CGI-версия РНР
Консольная версия РНР
«Бесконсольная» версия
Динамическая библиотека Apache
Файл конфигурации php.ini-dist
Библиотеки расширения
Другие файлы
Конфигурирование РНР
Конфигурирование расширений
Настройка Apache для работы с РНР
Установка РНР в виде CGI-программы
Установка РНР в виде модуля сервера
Тестирование РНР
Проверка конфигурации
Установка MySQL
Получение дистрибутива
Получение документации
Конфигурирование MySQL
Настройка параметров сервера
Запуск и остановка
Тестирование MySQL
Отладка и устранение ошибок
Отключение межсетевого экрана (firewall)
Просмотр истории обращения к файлам
Просмотр заголовков HTTP
Работа с интерактивным отладчиком PHPEd
Традиционная отладка РНР-сценариев
Интерактивный отладчик
Отладчик PHPEd
Настройка PHPEd
Ядро отладчика
«Слушатель” отладчика
Интерактивная оболочка отладчика
Тестирование PHPEd
Ссылки
Резюме

Глава 6. Денвер: автоматизация установки инструментария,
Что такое Денвер?
Условия использования
Что входит в Денвер?
Состав базового пакета
Дополнительные пакеты расширения
Поддержка разработчиков
Установка дистрибутива
Подготовка к работе с сетью
Пользователю Windows 95
Инсталляция
Работа с виртуальными хостами
Проблемы с контроллером удаленного доступа
Проблемы с прокси-сервером
Вопросы и ответы
Ссылки
Резюме

Глава 7. Установка РНР 5 в ОС Unix
PHP 5 как CGI-приложение
Загрузка дистрибутивов
Работа с Midnight Commander
Компиляция программ
Распаковка дистрибутивов
Компиляция библиотеки libxml2
Компиляция библиотеки libxslt
Компиляция РНР 5
Компиляция дополнительных модулей
Подключение РНР на машине хостинг-провайдера
Сборка РНР в виде модуля Apache
Сводка команд Unix
Ссылки
Резюме

ЧАСТЬ III. Основы языка РНР

Глава 8. Характеристика языка РНР
Интерпретатор или компилятор?
Основные термины
Как работает РНР
Достоинства и недостатки интерпретатора
РНР и СУБД
Интерпретатор и компилятор
РНР версии 5
Пример РНР-программы
Использование РНР в Web
Резюме

Глава 9. Переменные, константы, типы данных
Переменные
Копирование переменных
Типы переменных
integer (целое число)
double (вещественное число)
string (строка текста)
array (ассоциативный массив)
object (ссылка на объект)
resource (ресурс)
boolean (логический тип)
NULL (специальное значение)
Действия с переменными
Присвоение значения
Проверка существования
Уничтожение
Определение типа переменной
Установка типа переменной
Оператор присваивания
Ссылочные переменные
Жесткие ссылки
«Сбор мусора»
Символические ссылки
Ссылки на объекты
Некоторые условные обозначения
Константы
Предопределенные константы
Определение констант
Проверка существования константы
Отладочные функции
Резюме

Глава 10. Выражения и операции РНР
Выражения
Логические выражения
Строковые выражения
Строка в апострофах
Строка в кавычках
Неге-документ
Вызов внешней программы
Операции
Арифметические операции
Строковые операции
Операции присваивания
Операции инкремента и декремента
Битовые операции
Операции сравнения
Особенности операторов == и !—
Сравнение сложных переменных
Операция эквивалентности
Логические операции
Операция отключения предупреждений
Особенности оператора @
Противопоказания к использованию
Резюме

Глава 11. Работа с данными формы
Передача данных командной строки
Формы
Трансляция полей формы
Трансляция переменных окружения
Трансляция cookies
Обработка списков
Обработка массивов
Диагностика
Режим register_globals
Первый пример уязвимости
Второй пример уязвимости
Порядок трансляции переменных
Особенности флажков checkbox
Резюме

Глава 12. Конструкции языка
Инструкция if-else
Использование альтернативного синтаксиса
Цикл с предусловием while
Цикл с постусловием do-while
Универсальный цикл for
Инструкции break и continue
Нетрадиционное использование do-while и break
Цикл foreach
Конструкция switch-case
Инструкции require и include
Инструкции однократного включения
Суть проблемы
Решение: require_once
Другие инструкции
Резюме

Глава 13. Ассоциативные массивы
Создание массива «на лету». Автомассивы
Оператор list()
Списки и ассоциативные массивы: путаница?
Оператор arrayQ и многомерные массивы
Операции над массивами
Доступ по ключу
Функция countQ
Слияние массивов
Слияние списков
Обновление элементов
Косвенный перебор элементов массива
Перебор списка
Перебор ассоциативного массива
Недостатки косвенного перебора
Прямой перебор массива
Старый способ перебора
Перебор в стиле РНР 4
Ссылочный синтаксис foreach
Списки и строки
Сериализация
Упаковка
Распаковка
Резюме

Глава 14. Функции и области видимости
Пример функции
Общий синтаксис определения функции
Инструкция return
Объявление и вызов функции
Параметры по умолчанию
Передача параметров по ссылке
Переменное число параметров
Локальные переменные
Глобальные переменные
Массив SGLOBALS
Самовложенность
Как работает инструкция global
Статические переменные
Рекурсия
Факториал
Пример функции: dumper()
Вложенные функции
Условно определяемые функции
Эмуляция функции virîualQ
Передача функций «по ссылке”
Использование call_userJunc()
Использование calljiser_fimc_array()
Возврат функцией ссылки
Технология отложенного копирования
Несколько советов по использованию функций
Резюме

ЧАСТЬ IV. Стандартные функции РНР

Глава 15. Строковые функции
Конкатенация строк
О сравнении строк
Особенности strpos()
Работа с одиночными символами
Отрезание пробелов
Базовые функции
Работа с подстроками
Замена
Подстановка
Преобразования символов
Изменение регистра
Установка локали (локальных настроек)
Преобразование кодировок
Функции форматных преобразований
Форматирование текста
Работа с бинарными данными
Хэш-функции
Сброс буфера вывода
Резюме

Глава 16. Работа с массивами
Лексикографическая и числовая сортировки
Сортировка произвольных массивов
Сортировка по значениям
Сортировка по ключам
Пользовательская сортировка по ключам
Пользовательская сортировка по значениям
Переворачивание массива
«Естественная» сортировка
Сортировка списков
Сортировка списка
Пользовательская сортировка списка
Перемешивание списка
Ключи и значения
Слияние массивов
Работа с подмассивами
Работа со стеком и очередью
Переменные и массивы
Применение в шаблонах
Создание диапазона чисел
Работа с множествами
Пересечение
Разность
Объединение
Резюме

Глава 17. Математические функции
Встроенные константы
Функции округления
Случайные числа
Перевод в различные системы счисления
Минимум и максимум
Не-числа
Степенные функции
Тригонометрия
Резюме

Глава 18. Работа с файлами
О текстовых и бинарных файлах
Открытие файла
Конструкция or die()
Различия текстового и бинарного режимов
Сетевые соединения
Прямые и обратные слэши
Безымянные временные файлы
Закрытие файла
Чтение и запись
Блочные чтение/запись
Построчные чтение/запись
Чтение CSV-файла
Проблемы стандартной функции fgetcsv()
Положение указателя текущей позиции
Работа с путями
Манипулирование целыми файлами
Чтение и запись целого файла
Чтение INI-файла
Другие функции
Блокирование файла
Рекомендательная и жесткая блокировки
Функция flock()
Типы блокировок
Исключительная блокировка
Разделяемая блокировка
Блокировки с запретом «подвисания”
Пример счетчика
Резюме

Глава 19. Права доступа и атрибуты файлов
Идентификатор пользователя
Идентификатор группы
Владелец файла
Права доступа
Числовое представление прав доступа
Особенности каталогов
Примеры
Домашний каталог пользователя
Защищенный от записи файл
CGI-скрипт
Системные утилиты
Закрытые системные файлы
Права доступа на РНР-сценарии
Функции РНР
Права доступа
Определение атрибутов файла
Специальные функции
Определение типа файла
Определение возможности доступа
Ссылки
Символические ссылки
Жесткие ссылки
Резюме

Глава 20. Работа с каталогами
Манипулирование каталогами
Работа с записями
Пример: печать дерева каталогов
Получение содержимого каталога
Резюме

Глава 21. Запуск внешних программ
Запуск утилит
Оператор «обратные апострофы”
Экранирование командной строки
Режим safejnode
Каналы
Временные файлы
Открытие канала
Взаимная блокировка (deadlock)
Резюме

Глава 22. Работа с датами и временем
Представление времени в формате timestamp
Вычисление времени работы скрипта
Большие вещественные числа
Построение строкового представления даты
Построение timestamp
Разбор timestamp
Григорианский календарь
Проверка даты
Календарик
Дата и время по Гринвичу
Время по GMT
Хранение абсолютного времени
Перевод времени
Окончательное решение задачи
Резюме

Глава 23. Управление интерпретатором
Информационные функции
Настройка параметров РНР
РНР в виде модуля Apache
CGI-версия РНР
Создание переадресации для интерпретатора РНР
Переадресация в Unix
Использование функции ini_set()
Некоторые популярные директивы
Контроль ошибок
Директивы контроля ошибок
Установка режима вывода ошибок
Оператор отключения ошибок
Пример использования оператора @
Предостережения
Перехват ошибок
Проблемы с оператором @
Генерация ошибок
Стек вызовов функций
Принудительное завершение программы
Финализаторы
Генерация кода во время выполнения
Выполнение кода
Генерация функций
Другие функции
Резюме

Глава 24. Основы регулярных выражений в формате PCRE
Начнем с примеров
Пример первый
Пример второй
Пример третий
Пример четвертый
What is the PCRE?
Терминология
Языки регулярных выражений
Использование регулярных выражений в РНР
Сопоставление
Сопоставление с заменой
Язык PCRE
Ограничители
Альтернативные ограничители
Отмена действия спецсимволов
Простые символы (литералы)
Классы символов
Альтернативы
Отрицательные классы
Квантификаторы повторений
Ноль или более совпадений
Одно или более совпадений
Ноль или одно совпадение
Заданное число совпадений
Мнимые символы
Оператор альтернативы
Группирующие скобки
«Карманы»
Использование карманов в функции замены
Использование карманов в функции сопоставления
«Жадность» квантификаторов
Рекуррентные структуры
Группировка без захвата
Модификаторы
Модификатор //’: игнорирование регистра
Модификатор /х: пропуск пробелов и комментариев
Модификатор /т: многострочность
Модификатор /s: (однострочный поиск)
Модификатор/?: выполнение РНР-программы при замене
Незахватывающий поиск
Позитивный просмотр вперед
Негативный просмотр вперед
Позитивный просмотр назад
Негативный просмотр назад
Другие возможности PCRE
Функции РНР
Поиск совпадений
Замена совпадений
Разбиение по регулярному выражению
Выделение всех уникальных слов из текста
Экранирование символов
Фильтрация массива
Примеры использования регулярных выражений
Преобразование адресов e-mail
Преобразование гиперссылок
Быть или не быть?
Ссылки
Резюме

Глава 25. Работа с HTTP и WWW
Заголовки ответа
Вывод заголовка ответа
Проблемы с заголовками
Запрет кэширования
Получение выведенных заголовков
Получение заголовков запроса
Работа с cookies
Немного теории
Установка cookie
Массивы и cookie
Получение cookie
SSI и функция virtual()
Эмуляция функции virtual()
Разбор URL
Разбиение и «склеивание» QUERY_STRING
Разбиение и «склеивание» URL
Пример
Резюме

Глава 26. Сетевые функции
Сеть и файловые функции
Проблемы безопасности
Другие схемы
Работа с сокетами
«Эмуляция» браузера
Неблокирующее чтение
Функции для работы с DNS
Преобразование IP-адреса в доменное имя и наоборот
Получение МХ-записи
Резюме

Глава 27. Посылка писем через РНР
Формат электронного письма
Отправка письма
Почтовые шаблоны
Расщепление заголовков
Анализ заголовков
Русскоязычные кодировки
Заголовок Content-type и кодировка
Кодировка заголовков
Кодирование тела письма
Письма с вложениями
Динамическая смена кодировки
Активные шаблоны
Настройки РНР
Ссылки
Резюме

Глава 28. Работа с СУБД MySQL
Что такое база данных?
Неудобство работы с файлами
Архитектура MySQL
Администрирование базы данных
Порядок работы с базой данных
Интерфейсы для работы с MySQL
Соединение с сервером
Обработка ошибок
Выполнение запросов к базе данных
Автоматизация подключения к СУБД
Создание нового пользователя
Подключение с правами администратора
Язык запросов СУБД MySQL
CREATE DATABASE: создание базы данных
CREATE TABLE, создание таблицы
Типы полей
Модификаторы и флаги типов
DROP TABLE, удаление таблицы
INSERT вставка записи в таблицу
DELETE, удаление записей
SELECT, поиск и выборка записей
Получение числа записей, удовлетворяющих выражению
Получение уникальных значений столбцов
UPDATE обновление записей
Комментарии
Получение результата
Преобразование result-set в двумерный массив
AS: переименование полей
Передвижение по результирующему набору
LIMIT, ограничение выборки средствами SQL
Выборка строки в виде списка
Параметры результата
Получение отдельной ячейки результата
Информация о результате
Пример использования функций
Информация о таблицах и полях
AUTO INCREMENT, уникальные идентификаторы
Плотное следование идентификаторов
Получение идентификатора до вставки
Индексы и производительность БД
Как «работают” индексы
Создание индексов
EXPLAIN, план выполнения запроса
Недостатки индексов
MySQL и проблемы безопасности
Суть проблемы
Экранирование спецсимволов
Шаблоны запросов и placeholders
Пример: гостевая книга
Ссылки
Резюме

Глава 29. Управление сессиями
Что такое сессия?
Зачем нужны сессии?
Механизм работы сессий
Инициализация сессии
Пример использования сессии
Уничтожение сессии
Сессии и cookies
Явное использование константы S/D
Неявное изменение гиперссылок
Неявное изменение формы
Использовать ли cookies в сессиях?
«Лишние» идентификаторы
Идентификатор сессии и имя группы
Имя группы сессий
Идентификатор сессии
Путь к временному каталогу
Стоит ли изменять группу сессий?
Установка обработчиков сессии
Обзор обработчиков
Регистрация обработчиков
Пример: переопределение обработчиков
Регистрация глобальных переменных
Резюме

Глава 30. Работа с изображениями
Библиотека GD и формат GIF
Универсальная функция getimagesize()
Работа с изображениями и библиотека GD
Пример создания изображения
Создание изображения
Загрузка изображения
Определение параметров изображения
Сохранение изображения
Преобразование изображения в палитровое
Работа с цветом в формате RGB
Создание нового цвета
Текстовое представление цвета
Получение ближайшего в палитре цвета
Эффект прозрачности
Получение RGB-составляющих
Использование полупрозрачных цветов
Графические примитивы
Копирование изображений
Прямоугольники
Выбор пера
Линии
Дуга сектора
Закраска произвольной области
Закраска текстурой
Многоугольники
Работа с пикселами
Работа с фиксированными шрифтами
Загрузка шрифта
Параметры шрифта
Вывод строки
Работа со шрифтами TrueType
Вывод строки
Проблемы с русскими буквами
Определение границ строки
Коррекция функции imageTtfBBox()
Пример
Ссылки
Резюме

ЧАСТЬ V. Объектно-ориентированное программирование на РНР

Глава 31. Организация библиотек
Подключение файла библиотеки
Корневой каталог библиотек
Несколько путей поиска
Файл конфигурации
Преимущества использования путей подключения
Разрешение конфликтов имен
Проблема именования функций
Пространства имен
Соглашения PEAR
Соглашение 1: классы вместо пространств имен
Функции библиотеки
Переменные в библиотеке
Константы в библиотеке
Пространство имен self
Соглашение 2: формат библиотеки
Соглашение 3: использование подкаталогов
Автоматическая загрузка классов
Библиотека поддержки автозагрузки
Каталог модуля
PEAR: преобразование имени класса в имя файла
Неприятная особенность requireonce
Собираем все вместе
Пример использования всех библиотек
Главный файл скрипта
Недостатки глобальных переменных
Использование функций
Интерфейс библиотеки
Наследование и расширение модулей
Совместимость РНР 5 и РНР 4
Резюме

Глава 32. Классы и сокрытие данных
Новые возможности РНР 5
Класс как тип данных
Создание нового класса
Отличие классов от библиотек
Работа с классами
Создание объекта некоторого класса
Доступ к свойствам объекта
Доступ к методам
Создание нескольких объектов
Перегрузка преобразования в строку
Инициализация и разрушение
Конструктор
Параметры по умолчанию
Старый способ создания конструктора
Деструктор
Вопрос освобождения ресурсов
Описание деструктора
Алгоритм сбора мусора
Циклические ссылки
Проблема циклических ссылок
Решение проблемы циклических ссылок
Принудительное удаление объектов
Права доступа к членам класса
Модификаторы доступа
Public: открытый доступ
Private: доступ только из методов класса
Protected, доступ из методов производного класса
Неявное объявление свойств
Статические члены класса
Пример: счетчик объектов
Пример: кэш ресурсов
Общие рекомендации
Перехват обращений к членам класса
Клонирование объектов
Переопределение операции клонирования
Запрет клонирования
Перехват сериализации
Резюме

Глава 33. Наследование и виртуальные методы
Расширение класса
Метод включения
Недостатки метода
Несовместимость типов
Наследование
Переопределение методов
Модификаторы доступа при переопределении
Доступ к методом базового класса
Финальные методы
Запрет наследования
Константы _CLASS_ и _METHOD
Полиморфизм
Абстрагирование
Виртуальные методы
Расширение иерархии
Абстрактные классы и методы
Совместимость родственных типов
Уточнение типа в функциях
Оператор instanceof
Обратное преобразование типа
Множественное наследование и интерфейсы
Интерфейсы
Множественная реализация интерфейсов
Интерфейсы и абстрактные классы
Резюме

Глава 34. Обработка ошибок и исключения
Что такое ошибка?
Роли ошибок
Виды ошибок
Несерьезные ошибки :
Серьезные ошибки
Прекращение выполнения программы
Возврат недопустимого значения
Ненормальное состояние программы
Вызов функции-обработчика
Исключения
Базовый синтаксис
Инструкция throw
Раскрутка стека
Исключения и деструкторы
Исключения и set_error_handler()
Классификация и наследование
Базовый класс Exception
Использование интерфейсов
Блоки-финализаторы
Неподдерживаемая конструкция try .finally
«Выделение ресурса есть инициализация»
Перехват всех исключений
Трансформация ошибок
Серьезность «несерьезных» ошибок
Преобразование ошибок в исключения
Пример
Код библиотеки PHPExceptionizer
Иерархия исключений
Фильтрация по типам ошибок
Перспективы
Резюме

Глава 35. Отражения, итераторы, массивы
Неявный доступ к классам и методам
Неявный вызов метода
Неявный список аргументов
Инстанцирование классов
Использование неявных аргументов
Аппарат отражений
Функция: Reflection Function
Параметр функции: Reflection Parameter
Класс: Reflection Class
Наследование и отражения
Свойство класса: Reflection Property
Метод класса: Reflection Method
Библиотека расширения: Reflection Extension
Различные утилиты: Reflection
Исключение: Reflection Exception
Иерархия
Итераторы
Стандартное поведение foreach
Определение собственного итератора
Как РНР обрабатывает итераторы
Множественные итераторы
Виртуальные массивы
Библиотека SPL
Резюме

ЧАСТЬ VI. XML в PHP 5

Глава 36. Фундамент XML
XML-расширения языка РНР
Основные понятия XML
Типы XML-документов
Язык XHTML :
Резюме

Глава 37. DOM1 — объектная модель XML-документа
Перечень стандартов DOM
Кодировки
Класс dom Document, загрузка и выгрузка XML-документов
Обобщенный класс domNode
Классы Node List и NamedNodeMap
Класс Node List
Класс NamedNodeMap
Пример программы отображения свойств узлов XML-документа
Свойства объектов подклассов класса domNode
Свойства класса domDocument
Свойства класса domDocumentType
Свойства класса domEntity
Свойства класса domElement
Свойства класса dom Document Fragment
Свойства класса domAttr
Свойства класса dom Processinginstruction
Свойства класса domCharacterData
Свойства класса dom Text
Свойства класса domCDATASection
Свойства класса domComment
Построение и корректировка XML-документа
Создание экземпляра класса стандарта DOM
Методы класса domElement для работы с атрибутами
Методы класса domCharacterData для работы с текстом
Корректировка дерева узлов
Выборка узлов из документа
«Живые” объекты
Резюме

Глава 38. DOM2 — пространства имен
Пространство имен
Не очень простой пример
Пересечения имен
Использование пространства имен в атрибутах
Дополнительные свойства стандарта DOM2
Дополнительные методы стандарта DOM2
Методы создания элементов и атрибутов в указанном пространстве имен
Методы работы с атрибутами элемента класса domElement
Методы выбора элементов по имени
Методы доступа к текущим соотношениям префиксов и областей имен
Дополнительные методы класса NamedNodeMap
Дополнительные методы других классов
Интерфейс domlmplementation
Перенос узлов между документами
Нормализация узлов документа
Обработка исключительных ситуаций в DOM
Резюме :
Глава 39. DOM3 и другие стандарты
Модули стандарта DOM
Дополнительные интерфейсы и методы стандарта DOM3
Свойства и методы класса ciomDocumenî
Свойства класса domNode
Свойства класса Entity
Дополнительные интерфейсы
Методы обработки HTML-документов класса dom Document
Методы load HTM LFileQ, load H TM L()
Методы saveHTML(), saveHTMLFileQ
Поддержка различных кодировок в методах обработки HTML-документов
Резюме

Глава 40. Пути-дорожки: язык XPath
Базовые понятия языка XPath
Программа отображения результата XPôth-запроса
Структура запроса XPath
Ось child
Ось descendant
Ось descendant-or-self
Ось self
Ось following-sibling
Ось following
Ось attribute
Ось parent
Ось ancestor
Ось ancestor-or-self
Ось preceding-sibling
Ось preceding
Функции
Функции узлов
Строковые функции
Арифметические функции
Поддержка областей имен в языке XPath
Поддержка областей имен в функциях узлов
Привязка префиксов запроса
Резюме

Глава 41. Расширение SIMPLEXML
Простой пример
Загрузка и сохранение XML-документов
Доступ к узлам документа
Доступ к атрибутам узла
Доступ к атрибутам узла по имени
Доступ к атрибутам узла в порядке следования
Доступ к дочерним узлам
Доступ к дочерним узлам по имени
Доступ к дочерним узлам в порядке следования
Доступ к элементам по выражению языка XPath
Корректировка документа
Резюме

Глава 42. Расширение XSLT
Общие сведения о языке XSLT
Пример XSLT-трансформации
Программа songs.xsl (нулевой уровень)
Программа song.xsl (первый уровень)
Программы второго уровня
Программы третьего уровня
Объекты и методы поддержки XSLT в РНР 5
Метод transformtoXML()
Метод transformtoURI()
Метод transformtoDOCQ
Форматы выходных документов
Вызов PHP-функций из РНР-программ
Поддержка расширений XSLT (EXSLT)
Модуль Common
Модуль Math
Модуль Sets
Модуль Functions
Модуль Dates and Times
Модуль Strings
Модуль Regular Expressions
Модуль Random
Ссылки
Резюме

ЧАСТЬ VII. Приемы программирования на РНР 5

Глава 43. Загрузка файлов на сервер
Multipart- формы
Тег выбора файла
Закачка файлов и безопасность
Поддержка закачки в РНР
Простые имена полей закачки
Получение закачанного файла
Пример: фотоальбом
Сложные имена полей
Резюме

Глава 44. Использование перенаправлений
Внешний редирект
Внутренний редирект
Самопереадресация
Резюме

Глава 45. Перехват выходного потока
Функции перехвата
Стек буферов
Недостатки «ручного» перехвата
Использование объектов и деструкторов
Класс для перехвата выходного потока
Недостатки класса
Проблемы с отладкой
Обработчики буферов
GZip-сжатие
Печать эффективности сжатия
Резюме

Глава 46. Код и шаблон страницы
Первый способ: «вкрапление» HTML в код
Второй способ: вставка кода в шаблон
Третий способ: Model-View-Controller
Шаблон (View)
Контроллер (Controller)
Модель (Model)
Взаимодействие элементов
Активные и пассивные шаблоны
Активные шаблоны
Пассивные шаблоны
Недостатки MVC
Четвертый способ: компонентный подход
Блочная структура Web-страниц
Взаимодействие элементов
Шаблон (View)
Компоненты (Components)
Добавление записи
Показ записей
Показ новостей
Проверка корректности входных данных
Полномочия Компонентов
Достоинства подхода
Система Smarty
Трансляция в код на РНР
Использование Smarty в MVC-схеме
Инструкции Smarty
Одиночные и парные теги
Вставка значения переменной: {Svariable }
Модификаторы
Перебор массива: {foreach} .{/foreach}
Ветвление: (if) .{else} .{/if}
Вставка содержимого внешнего файла: {include}
Вывод отладочной консоли: {debug}
Удаление пробелов: {strip} .{/strip}
Оператор присваивания: {assign}
Оператор перехвата блока: {capture}
Циклическая подстановка: {cycle}
Глоссарий
Резюме

Глава 47. Динамическая загрузка данных (AJAX)
Web 2.0
Что такое AJAX?
Google Suggest
Компоненты AJAX-приложения
Оглавление
Язык программирования JavaScript
Программа, встроенная в атрибут
Программа, встроенная в страницу
Динамическое присваивание атрибутов, замыкания
Библиотека JsHttpRequest: кроссбраузерный AJAX и закачка файлов
Пример использования: автоподсказка набора
Клиентская часть
Серверная часть
Закачка файлов методом AJAX
Тестирование клиентской части
Тестирование серверной части
Перехват ошибок в РНР-загрузчике
Отправка формы целиком
Асинхронность запросов
Работа со встроенным объектом XMLHttpRequest
Формат JSON: решение части проблем
Текстовый формат и XMLHttpRequest
Совместимость JsHttpRequest и XMLHttpRequest
Ссылки
Резюме

Глава 48. DbSimple: упрощенный интерфейс работы с СУБД
Что необходимо сценарию от СУБД
Недостатки PEAR DB, ADOdb и PDO
Основные характеристики DbSimple
DSN-подключение к БД
Обработка ошибок
Пример ошибки подключения
Ошибки и исключения
Основные placeholder-заполнители
Строковый (бинарный) placeholder-заполнитель
Списочный/ассоциативный placeholder-заполнитель4
Дополнительные placeholder-заполнитель
Префиксный placeholder-заполнитель
Идентификаторный placeholder-заполнитель
Идентификаторно-списочный placeholder-заполнитель
Целочисленный placeholder-заполнитель
Вещественный (дробный) placeholder-заполнитель
Ссылочный placeholder-заполнитель
«Родные” placeholder-заполнитель СУБД
Выполнение запросов к БД
Выборка всего результата: select()
Выборка ассоциативного массива
Выборка многомерного массива
Выборка связанного дерева
Выборка строки: selectRow()
Выборка ячейки: selectCell()
Выборка столбца: selectCol()
Выборка страницы: se/ectPage()
Выполнение обновлений: query()
Обработка ошибок в запросах
Макроподстановки в SQL-запросах
Оптимизация связки «подготовка» + «выполнение»
Журналирование запросов
Транзакции
Запросы с атрибутами
Атрибут BLOB OBJ. объектные BLOB-поля
Атрибут CACHE: кэширование запросов
Зависимость от источников данных
Использование Cache Lite из PEAR
Работа с кэш-хранилищем
Ссылки
Резюме
Предметный указатель

СкачатьDJVU

Похожая литература