Zend Framework Reference 1.11 Русская версия

Zend_Acl…………………………………………………………………………………………………….. 2

Введение……………………………………………………………………………………………………… 2

Ресурсы……………………………………………………………………………………………………. 2

Роли………………………………………………………………………………………………………….. 2

Создание списка контроля доступа (ACL)……………………………………………………………………………………………….. 4

Регистрация ролей……………………………………………………………………………………………………………………………… 4

Определение контроля доступа………………………………………………………………………………………………………. 5

Запросы к ACL……………………………………………………………………………………………. 6

Настройка управления доступом………………………………………………………………………………………………… 8

Точное управление доступом………………………………………………………………………………………………………………. 8

Удаление правил доступа……………………………………………………………………………………………………… 9

Zend_Application…………………………………………………………………………………….. 11

Введение…………………………………………………………………………………………………… 11

Zend_Application – Быстрый старт……………………………………………………………………………………………………………. 11

Использование вместе с Zend_Tool……………………………………………………………………………………………………… 11

Добавление Zend_Application в приложение……………………………………………………………………………………….. 13

Добавление и создание ресурсов……………………………………………………………………………………………………….. 15

Следующие шаги с Zend_Application……………………………………………………………………………………………………. 16

Расширенное использование………………………………………………………………………………………………………………… 17

Постоянное хранение данных ACL………………………………………………………………………………………………………. 17

Написание условных правил ACL с утверждениями……………………………………………………………………………….. 17

Теоретические основы работы с Zend_Application……………………………………………………………………………………. 19

Начальная загрузка……………………………………………………………………………………………………………………………. 20

Методы ресурсов……………………………………………………………………………………………………………………………… 20

Загрузки, использующие плагины ресурсов………………………………………………………………………………………….. 21

Реестр ресурсов……………………………………………………………………………………………………………………………….. 23

Отслеживание зависимостей……………………………………………………………………………………………………………… 25

Плагины ресурсов……………………………………………………………………………………………………………………………… 26

Zend_Cache………………………………………………………………………………………………………………………………………….. 28

Введение……………………………………………………………………………………………………………………………………………. 28

Теория кэширования……………………………………………………………………………………………………………………………. 30

Фабричный метод Zend_Cache……………………………………………………………………………………………………………. 30

Добавление тегов к записям………………………………………………………………………………………………………………. 31

Очистка кэша……………………………………………………………………………………………………………………………………. 31

Фронтэнды Zend_Cache……………………………………………………………………………………………………………………….. 32

Zend_Cache_Core…………………………………………………………………………………………………………………………………. 32

Введение……………………………………………………………………………………………………………………………………………. 32

Доступные опции……………………………………………………………………………………………………………………………… 32

Примеры…………………………………………………………………………………………………………………………………………. 33

Zend_Cache_Frontend_Output……………………………………………………………………………………………………………….. 35

Введение……………………………………………………………………………………………………………………………………………. 35

Доступные опции……………………………………………………………………………………………………………………………… 35

Примеры…………………………………………………………………………………………………………………………………………. 35

Zend_Cache_Frontend_Function……………………………………………………………………………………………………………… 36

Введение……………………………………………………………………………………………………………………………………………. 36

Доступные опции……………………………………………………………………………………………………………………………… 36

Примеры…………………………………………………………………………………………………………………………………………. 36

Zend_Cache_Frontend_Class………………………………………………………………………………………………………………….. 36

Введение……………………………………………………………………………………………………………………………………………. 36

Доступные опции……………………………………………………………………………………………………………………………… 36

Примеры…………………………………………………………………………………………………………………………………………. 37

Zend_Cache_Frontend_File…………………………………………………………………………………………………………………….. 37

Введение……………………………………………………………………………………………………………………………………………. 37

Доступные опции……………………………………………………………………………………………………………………………… 38

Примеры…………………………………………………………………………………………………………………………………………. 38

Zend_Cache_Frontend_Page………………………………………………………………………………………………………………….. 38

Введение……………………………………………………………………………………………………………………………………………. 38

Доступные опции……………………………………………………………………………………………………………………………… 39

Примеры…………………………………………………………………………………………………………………………………………. 40

Отмена кэширования……………………………………………………………………………………………………………………………. 41

Бэкэнды Zend_Cache……………………………………………………………………………………………………………………………. 43

Zend_Cache_Backend_File……………………………………………………………………………………………………………………… 43

Доступные опции:…………………………………………………………………………………………………………………………….. 43

Zend_Cache_Backend_Sqlite…………………………………………………………………………………………………………………… 43

Доступные опции:…………………………………………………………………………………………………………………………….. 43

Zend_Cache_Backend_Memcached…………………………………………………………………………………………………………. 44

Доступные опции:…………………………………………………………………………………………………………………………….. 44

Zend_Cache_Backend_Apc…………………………………………………………………………………………………………………….. 44

Zend_Cache_Backend_Xcache………………………………………………………………………………………………………………… 44

Доступные опции:…………………………………………………………………………………………………………………………….. 45

Zend_Cache_Backend_ZendPlatform……………………………………………………………………………………………………….. 45

Zend_Cache_Backend_TwoLevels……………………………………………………………………………………………………………. 45

Доступные опции:…………………………………………………………………………………………………………………………….. 45

Zend_Cache_Backend_ZendServer_Disk и Zend_Cache_Backend_ZendServer_ShMem……………………………………. 46

Zend_Config………………………………………………………………………………………………………………………………………….. 47

Введение……………………………………………………………………………………………………………………………………………. 47

Теоретические основы работы с Zend_Config………………………………………………………………………………………….. 48

Zend_Config_Ini……………………………………………………………………………………………………………………………………. 49

Zend_Config_Xml………………………………………………………………………………………………………………………………….. 51

Zend_Config_Writer……………………………………………………………………………………………………………………………… 55

Zend_Controller……………………………………………………………………………………………………………………………………. 57

Zend_Controller – Быстрый старт…………………………………………………………………………………………………………….. 57

Введение……………………………………………………………………………………………………………………………………………. 57

Быстрый старт…………………………………………………………………………………………………………………………………… 57

Создайте файловую структуру…………………………………………………………………………………………………………….. 57

Установите корневую директорию для документов………………………………………………………………………………. 57

Создайте свои правила перезаписи…………………………………………………………………………………………………….. 57

Создайте файл загрузки……………………………………………………………………………………………………………………… 58

Создайте свой контроллер действий, используемый по умолчанию……………………………………………………….. 59

Создайте скрипт вида………………………………………………………………………………………………………………………… 60

Создайте контроллер ошибок…………………………………………………………………………………………………………….. 60

Смотрим сайт!………………………………………………………………………………………………………………………………….. 61

Основы Zend_Controller………………………………………………………………………………………………………………………… 62

Фронт-контроллер……………………………………………………………………………………………………………………………….. 65

Обзор………………………………………………………………………………………………………………………………………………. 65

Ключевые методы…………………………………………………………………………………………………………………………….. 65

getInstance()…………………………………………………………………………………………………………………………………….. 65

setControllerDirectory() и addControllerDirectory()………………………………………………………………………………….. 65

addModuleDirectory() и getModuleDirectory()……………………………………………………………………………………….. 66

dispatch()…………………………………………………………………………………………………………………………………………. 66

run()………………………………………………………………………………………………………………………………………………… 67

Методы-аксессоры для конфигурирования………………………………………………………………………………………….. 67

Параметры фронт-контроллера………………………………………………………………………………………………………….. 69

Расширение фронт-контроллера………………………………………………………………………………………………………… 70

Объект запроса……………………………………………………………………………………………………………………………………. 71

Введение…………………………………………………………………………………………………………………………………………. 71

HTTP-запросы………………………………………………………………………………………………………………………………………. 71

Доступ к данным запроса…………………………………………………………………………………………………………………… 71

Базовый URL и поддиректории……………………………………………………………………………………………………………. 73

Определение HTTP-метода запроса……………………………………………………………………………………………………. 74

Определение запросов AJAX……………………………………………………………………………………………………………… 74

Создание подклассов объекта запроса………………………………………………………………………………………………… 74

Стандартный маршрутизатор………………………………………………………………………………………………………………… 76

Введение…………………………………………………………………………………………………………………………………………. 76

Использование маршрутизатора………………………………………………………………………………………………………… 78

Базовые операции Rewrite Router……………………………………………………………………………………………………….. 78

Маршруты, используемые по умолчанию……………………………………………………………………………………………. 79

Базовый URL и поддиректории……………………………………………………………………………………………………………. 80

Глобальные параметры…………………………………………………………………………………………………………………….. 81

Типы маршрутов………………………………………………………………………………………………………………………………….. 81

Zend_Controller_Router_Route……………………………………………………………………………………………………………. 81

Значения переменных по умолчанию…………………………………………………………………………………………………. 82

Требования к переменным………………………………………………………………………………………………………………… 83

Переводимые сегменты…………………………………………………………………………………………………………………….. 83

Zend_Controller_Router_Route_Static…………………………………………………………………………………………………… 86

Zend_Controller_Router_Route_Regex…………………………………………………………………………………………………. 86

Zend_Controller_Router_Route_Hostname……………………………………………………………………………………………. 90

Zend_Controller_Router_Route_Chain………………………………………………………………………………………………….. 90

Объединение маршрутов через Zend_Config……………………………………………………………………………………….. 91

Использование Zend_Config вместе с RewriteRouter…………………………………………………………………………………. 94

Создание подклассов маршрутизатора…………………………………………………………………………………………………… 94

Диспетчер…………………………………………………………………………………………………………………………………………… 96

Обзор………………………………………………………………………………………………………………………………………………. 96

Создание подклассов диспетчера……………………………………………………………………………………………………….. 97

Контроллеры действий……………………………………………………………………………………………………………………….. 101

Введение……………………………………………………………………………………………………………………………………….. 101

Инициализация объекта…………………………………………………………………………………………………………………… 102

Перехватчики Pre- и Post-Dispatch……………………………………………………………………………………………………… 103

Аксессоры………………………………………………………………………………………………………………………………………. 103

Интеграция вида……………………………………………………………………………………………………………………………… 104

Инициализация вида……………………………………………………………………………………………………………………….. 104

Рендеринг видов…………………………………………………………………………………………………………………………….. 105

Сервисные методы………………………………………………………………………………………………………………………….. 106

Создание подклассов контроллера действий……………………………………………………………………………………… 106

Помощники действий………………………………………………………………………………………………………………………….. 109

Введение……………………………………………………………………………………………………………………………………….. 109

Инициализация помощника……………………………………………………………………………………………………………… 109

Брокер помощников………………………………………………………………………………………………………………………… 109

Встроенные помощники действий…………………………………………………………………………………………………….. 111

ActionStack……………………………………………………………………………………………………………………………………… 111

AutoComplete…………………………………………………………………………………………………………………………………. 113

Автодополнение c Dojo……………………………………………………………………………………………………………………. 114

Автодополнение с Scriptaculous………………………………………………………………………………………………………… 117

ContextSwitch и AjaxContext……………………………………………………………………………………………………………… 118

Доступные по умолчанию контексты…………………………………………………………………………………………………. 119

Создание своего контекста……………………………………………………………………………………………………………….. 120

Установка контекстов для действий…………………………………………………………………………………………………… 121

Инициализация переключения контекста………………………………………………………………………………………….. 123

Дополнительный функционал………………………………………………………………………………………………………….. 123

Функционал AjaxContext………………………………………………………………………………………………………………….. 125

FlashMessenger……………………………………………………………………………………………………………………………….. 126

Введение……………………………………………………………………………………………………………………………………….. 126

Базовый пример использования……………………………………………………………………………………………………….. 126

JSON………………………………………………………………………………………………………………………………………………. 127

Redirector……………………………………………………………………………………………………………………………………….. 128

Введение……………………………………………………………………………………………………………………………………….. 128

Базовые примеры использования……………………………………………………………………………………………………… 130

ViewRenderer………………………………………………………………………………………………………………………………….. 133

Введение……………………………………………………………………………………………………………………………………….. 133

API…………………………………………………………………………………………………………………………………………………. 134

Примеры базового использования…………………………………………………………………………………………………….. 139

Примеры продвинутого использования……………………………………………………………………………………………… 142

Написание собственных помощников………………………………………………………………………………………………… 143

Объект ответа……………………………………………………………………………………………………………………………………. 145

Использование……………………………………………………………………………………………………………………………….. 145

Управление заголовками…………………………………………………………………………………………………………………. 146

Именованные сегменты…………………………………………………………………………………………………………………… 147

Проверка на исключения в объекте ответа…………………………………………………………………………………………. 149

Создание подклассов объекта ответа…………………………………………………………………………………………………. 150

Плагины…………………………………………………………………………………………………………………………………………….. 151

Введение……………………………………………………………………………………………………………………………………….. 151

Написание плагинов………………………………………………………………………………………………………………………… 151

Использование плагинов………………………………………………………………………………………………………………….. 152

Извлечение и работа с плагинами……………………………………………………………………………………………………… 153

Плагины, включенные в стандартную поставку…………………………………………………………………………………… 153

ActionStack……………………………………………………………………………………………………………………………………… 153

Zend_Controller_Plugins_ErrorHandler…………………………………………………………………………………………………. 154

Использование ErrorHandler в качестве обработчика ошибки 404………………………………………………………….. 155

Управление сгенерированным ранее выводом…………………………………………………………………………………… 157

Примеры использования плагина……………………………………………………………………………………………………… 157

Пример контроллера ошибок…………………………………………………………………………………………………………… 158

Использование модульной структуры директорий…………………………………………………………………………………. 159

Введение……………………………………………………………………………………………………………………………………….. 159

Определение директорий контроллеров в модулях……………………………………………………………………………. 160

Маршрутизация применительно к модулям……………………………………………………………………………………….. 161

Модуль или глобальный контроллер по умолчанию…………………………………………………………………………… 161

Исключения………………………………………………………………………………………………………………………………………. 162

Введение……………………………………………………………………………………………………………………………………….. 162

Обработка исключений……………………………………………………………………………………………………………………. 162

Исключения в MVC, с которыми вы можете встретиться………………………………………………………………………. 163

Zend_Db……………………………………………………………………………………………………………………………………………… 167

Zend_Db_Adapter……………………………………………………………………………………………………………………………….. 167

Соединение с БД с использованием адаптера…………………………………………………………………………………….. 167

Использование конструктора адаптера Zend_Db…………………………………………………………………………………. 167

Использование фабрики Zend_Db……………………………………………………………………………………………………… 168

Использование Zend_Config с фабрикой Zend_Db……………………………………………………………………………….. 169

Параметры адаптера……………………………………………………………………………………………………………………….. 169

Управление отложенными соединениями…………………………………………………………………………………………. 171

Пример базы данных……………………………………………………………………………………………………………………….. 172

Чтение результатов запроса……………………………………………………………………………………………………………… 173

Извлечение полного набора результатов…………………………………………………………………………………………… 173

Изменение режима извлечения……………………………………………………………………………………………………….. 174

Извлечение результатов выборки в виде ассоциативного массива………………………………………………………… 175

Извлечение единственного столбца из результатов выборки……………………………………………………………….. 175

Извлечение пар ключ-значение из результатов выборки…………………………………………………………………….. 175

Извлечение единственной строки из результатов выборки………………………………………………………………….. 176

Извлечение единственного скалярного значения из результатов выборки…………………………………………….. 176

Изменение данных в БД…………………………………………………………………………………………………………………… 176

Добавление данных………………………………………………………………………………………………………………………… 176

Получение сгенерированного значения…………………………………………………………………………………………….. 177

Обновление данных………………………………………………………………………………………………………………………… 179

Удаление данных……………………………………………………………………………………………………………………………. 180

Заключение в кавычки значений и идентификаторов…………………………………………………………………………… 180

Использование quote()…………………………………………………………………………………………………………………. 181

Использование quoteInto()…………………………………………………………………………………………………………. 182

Использование quoteIdentifier()…………………………………………………………………………………………….. 183

Управление транзакциями……………………………………………………………………………………………………………….. 184

Листинг и описание таблиц……………………………………………………………………………………………………………….. 185

Закрытие соединения………………………………………………………………………………………………………………………. 186

Запуск других операторов БД……………………………………………………………………………………………………………. 186

Примечания к отдельным адаптерам………………………………………………………………………………………………… 187

IBM DB2………………………………………………………………………………………………………………………………….. 187

MySQLi……………………………………………………………………………………………………………………………………. 187

Oracle……………………………………………………………………………………………………………………………………….. 187

PDO для IBM DB2 и Informix Dynamic Server (IDS)………………………………………………………………….. 188

PDO Microsoft SQL Server………………………………………………………………………………………………………… 188

PDO MySQL…………………………………………………………………………………………………………………………….. 188

PDO Oracle………………………………………………………………………………………………………………………………. 189

PDO PostgreSQL………………………………………………………………………………………………………………………. 189

PDO SQLite……………………………………………………………………………………………………………………………… 189

Firebird/Interbase……………………………………………………………………………………………………………………….. 190

Zend_Db_Statement……………………………………………………………………………………………………………………………. 191

Создание оператора………………………………………………………………………………………………………………………… 191

Выполнение оператора……………………………………………………………………………………………………………………. 191

Извлечение результатов выполнения оператора SELECT…………………………………………………………………… 192

Извлечение одной строки из набора результатов……………………………………………………………………………….. 192

Извлечение всего набора результатов……………………………………………………………………………………………….. 193

Изменение формата извлечения………………………………………………………………………………………………………. 193

Извлечение одного столбца из набора результатов…………………………………………………………………………….. 194

Извлечение строки в виде объекта……………………………………………………………………………………………………. 194

Zend_Db_Profiler………………………………………………………………………………………………………………………………… 195

Введение……………………………………………………………………………………………………………………………………….. 195

Использование профилировщика……………………………………………………………………………………………………… 196

Расширенное использование профилировщика………………………………………………………………………………….. 197

Фильтрация по времени выполнения запроса…………………………………………………………………………………….. 198

Фильтрация по типу запроса……………………………………………………………………………………………………………… 198

Получение профилей по типу запроса……………………………………………………………………………………………….. 199

Специализированные профилировщики……………………………………………………………………………………………. 199

Profiling with Firebug…………………………………………………………………………………………………………………………. 199

Zend_Db_Select………………………………………………………………………………………………………………………………….. 201

Обзор…………………………………………………………………………………………………………………………………………….. 201

Создание объекта Select…………………………………………………………………………………………………………………… 201

Построение запросов Select……………………………………………………………………………………………………………… 201

Добавление предложения FROM………………………………………………………………………………………………………. 202

Добавление колонок……………………………………………………………………………………………………………………….. 203

Добавление столбцов выражений…………………………………………………………………………………………………….. 204

Добавление столбцов в существующую таблицу FROM или JOIN…………………………………………………………… 205

Добавление в запрос другой таблицы c помощью JOIN………………………………………………………………………… 206

Добавление предложения WHERE…………………………………………………………………………………………………….. 209

Добавление предложения GROUP BY………………………………………………………………………………………………… 211

Добавление предложения HAVING…………………………………………………………………………………………………… 211

Добавление предложения ORDER BY…………………………………………………………………………………………………. 212

Добавление предложения LIMIT……………………………………………………………………………………………………….. 213

Добавление модификатора DISTINCT…………………………………………………………………………………………………. 214

Добавление модификатора FOR UPDATE……………………………………………………………………………………………. 214

Произведение запросов на выборку………………………………………………………………………………………………….. 214

Произведение запросов на выборку из адаптера БД……………………………………………………………………………. 214

Произведение запросов на выборку через объект Select……………………………………………………………………… 214

Преобразование объекта Select в SQL-строку……………………………………………………………………………………… 215

Другие методы……………………………………………………………………………………………………………………………….. 215

Получение частей объекта Select………………………………………………………………………………………………………. 215

Сброс частей запроса в объекте Select……………………………………………………………………………………………….. 216

Zend_Db_Table…………………………………………………………………………………………………………………………………… 218

Класс таблицы – введение………………………………………………………………………………………………………………… 218

Определение класса таблицы…………………………………………………………………………………………………………… 218

Определение имени и схемы таблицы………………………………………………………………………………………………. 218

Определение первичного ключа таблицы………………………………………………………………………………………….. 219

Переопределение методов установки таблицы………………………………………………………………………………….. 220

Инициализация таблицы………………………………………………………………………………………………………………….. 220

Создание экземпляра класса таблицы……………………………………………………………………………………………….. 221

Установка адаптера БД…………………………………………………………………………………………………………………….. 221

Установка используемого по умолчанию адаптера БД…………………………………………………………………………. 221

Хранение адаптера БД в реестре………………………………………………………………………………………………………. 222

Добавление строк в таблицу…………………………………………………………………………………………………………….. 222

Использование таблицы с автоинкрементным ключом……………………………………………………………………….. 223

Использование таблицы с последовательностью………………………………………………………………………………… 223

Использование таблицы с естественным ключом……………………………………………………………………………….. 224

Обновление строк в таблице…………………………………………………………………………………………………………….. 224

Удаление строк из таблицы………………………………………………………………………………………………………………. 225

Извлечение строк по первичному ключу……………………………………………………………………………………………. 225

Извлечение наборов строк……………………………………………………………………………………………………………….. 227

API для произведения выборки………………………………………………………………………………………………… 227

Извлечение набора строк………………………………………………………………………………………………………….. 228

Расширенное использование…………………………………………………………………………………………………….. 229

Извлечение одной строки………………………………………………………………………………………………………………… 230

Получение метаданных таблицы………………………………………………………………………………………………………. 231

Кэширование метаданных таблицы…………………………………………………………………………………………………… 231

Расширение класса таблицы…………………………………………………………………………………………………………….. 233

Использование собственных классов строки и набора строк…………………………………………………….. 233

Определение собственной логики для добавления, обновления и удаления строк…………………….. 235

Определение собственных методов для поиска………………………………………………………………………… 235

Определение инфлекции в Zend_Db_Table……………………………………………………………………………….. 236

Zend_Db_Table_Row…………………………………………………………………………………………………………………………… 238

Введение……………………………………………………………………………………………………………………………………….. 238

Извлечение строки………………………………………………………………………………………………………………………….. 238

Чтение значений столбцов из строки…………………………………………………………………………………………………. 238

Получение данных строки в виде массива………………………………………………………………………………………….. 238

Извлечение данных из связанных таблиц…………………………………………………………………………………………… 239

Редактирование строк в БД………………………………………………………………………………………………………………. 239

Изменение значений столбцов в строке……………………………………………………………………………………. 239

Вставка новой строки………………………………………………………………………………………………………………. 239

Изменение значений в нескольких столбцах………………………………………………………………………………………. 240

Удаление строки……………………………………………………………………………………………………………………………… 241

Сериализация и десериализация строк………………………………………………………………………………………………. 241

Сериализация объекта строки…………………………………………………………………………………………………………… 241

Десериализация данных строки………………………………………………………………………………………………………… 241

Восстановление соединения для объекта строки………………………………………………………………………………… 242

Расширение класса строки……………………………………………………………………………………………………………….. 242

Инициализация строки…………………………………………………………………………………………………………………….. 243

Определение собственной логики для добавления, обновления и удаления в Zend_Db_Table_Row…………. 243

Определение инфлекции в Zend_Db_Table_Row………………………………………………………………………………… 245

Zend_Db_Table_Rowset……………………………………………………………………………………………………………………….. 247

Введение……………………………………………………………………………………………………………………………………….. 247

Получение набора строк………………………………………………………………………………………………………………….. 247

Получение строк из набора………………………………………………………………………………………………………………. 247

Получение набора строк в виде массива…………………………………………………………………………………………….. 248

Сериализация и десериализация наборов строк………………………………………………………………………………….. 249

Расширение класса набора строк………………………………………………………………………………………………………. 250

Связи между таблицами Zend_Db_Table………………………………………………………………………………………………… 252

Введение……………………………………………………………………………………………………………………………………….. 252

Определение связей……………………………………………………………………………………………………………………….. 252

Извлечение зависимых строк……………………………………………………………………………………………………………. 254

Извлечение родительской строки……………………………………………………………………………………………………… 256

Извлечение строк через связи “многие-ко-многим”…………………………………………………………………………….. 257

Каскадные операции записи……………………………………………………………………………………………………………… 260

Примечания относительно каскадных операций…………………………………………………………………………………. 261

Zend_Debug………………………………………………………………………………………………………………………………………… 263

Дамп переменных……………………………………………………………………………………………………………………………… 263

Отладка с применением Zend_Log…………………………………………………………………………………………………….. 263

Zend_Dom…………………………………………………………………………………………………………………………………………… 264

Введение…………………………………………………………………………………………………………………………………………… 264

Zend_Dom_Query……………………………………………………………………………………………………………………………….. 264

Теория работы………………………………………………………………………………………………………………………………… 264

Доступные методы………………………………………………………………………………………………………………………….. 266

Zend_Dom_Query……………………………………………………………………………………………………………………………. 266

Zend_Dom_Query_Result………………………………………………………………………………………………………………….. 266

Zend_Exception…………………………………………………………………………………………………………………………………… 267

Использование исключений………………………………………………………………………………………………………………… 267

Basic usage…………………………………………………………………………………………………………………………………………. 267

Previous Exceptions……………………………………………………………………………………………………………………………… 267

Zend_Filter………………………………………………………………………………………………………………………………………….. 269

Введение…………………………………………………………………………………………………………………………………………… 269

Что есть фильтр?……………………………………………………………………………………………………………………………… 269

Основы использования фильтров………………………………………………………………………………………………………. 269

Использование статического метода get()………………………………………………………………………………………….. 269

Цепочки фильтров……………………………………………………………………………………………………………………………… 270

Написание фильтров…………………………………………………………………………………………………………………………… 271

Zend_Form………………………………………………………………………………………………………………………………………….. 272

Zend_Form…………………………………………………………………………………………………………………………………………. 272

Zend_Form – Быстрый старт………………………………………………………………………………………………………………….. 272

Создание объекта формы…………………………………………………………………………………………………………………. 272

Добавление элементов в форму……………………………………………………………………………………………………….. 272

Визуализация формы……………………………………………………………………………………………………………………….. 274

Проверка корректности данных формы……………………………………………………………………………………………… 276

Получение статуса ошибки……………………………………………………………………………………………………………….. 276

Объединяя изложенное…………………………………………………………………………………………………………………… 277

Использование объекта Zend_Config…………………………………………………………………………………………………. 278

Заключение……………………………………………………………………………………………………………………………………. 279

Zend_Http…………………………………………………………………………………………………………………………………………… 280

Zend_Http_Client – Введение………………………………………………………………………………………………………………… 280

Введение……………………………………………………………………………………………………………………………………….. 280

Параметры конфигурации………………………………………………………………………………………………………………… 280

Выполнение базовых HTTP-запросов…………………………………………………………………………………………………. 281

Добавление параметров GET и POST………………………………………………………………………………………………….. 281

Получение последних запроса и ответа……………………………………………………………………………………………… 282

Zend_Json…………………………………………………………………………………………………………………………………………… 284

Введение…………………………………………………………………………………………………………………………………………… 284

Основы применения…………………………………………………………………………………………………………………………… 284

Объекты JSON……………………………………………………………………………………………………………………………………. 284

XML to JSON conversion……………………………………………………………………………………………………………………….. 285

Zend_Layout……………………………………………………………………………………………………………………………………….. 287

Введение…………………………………………………………………………………………………………………………………………… 287

Zend_Layout – Быстрый старт………………………………………………………………………………………………………………… 287

Скрипты макетов…………………………………………………………………………………………………………………………….. 287

Использование Zend_Layout с MVC Zend Framework-а…………………………………………………………………………. 288

Использование Zend_Layout как отдельной компоненты…………………………………………………………………….. 290

Пример макета……………………………………………………………………………………………………………………………….. 292

Опции конфигурирования Zend_Layout…………………………………………………………………………………………………. 293

Примеры………………………………………………………………………………………………………………………………………… 293

Использование Zend_Layout для опытных разработчиков……………………………………………………………………….. 295

Собственные объекты вида………………………………………………………………………………………………………………. 295

Собственные плагины фронт-контроллера…………………………………………………………………………………………. 297

Собственные помощники действий…………………………………………………………………………………………………… 297

Собственное определение пути к скрипту макета: использование инфлектора………………………………………. 297

Zend_Loader……………………………………………………………………………………………………………………………………….. 299

Динамическая загрузка файлов и классов………………………………………………………………………………………………. 299

Zend_Loader vs. require_once()………………………………………………………………………………………………………….. 299

Загрузка файлов………………………………………………………………………………………………………………………………. 299

Загрузка классов……………………………………………………………………………………………………………………………… 299

Проверка на возможность чтения из файла…………………………………………………………………………………………. 300

Использование автозагрузчика…………………………………………………………………………………………………………. 300

Автозагрузчик…………………………………………………………………………………………………………………………………….. 302

Использование автозагрузчика…………………………………………………………………………………………………………. 302

Итерфейс автозагрузчика…………………………………………………………………………………………………………………. 303

Справка по автозагрузчику……………………………………………………………………………………………………………….. 303

Zend_Mail…………………………………………………………………………………………………………………………………………… 310

Введение…………………………………………………………………………………………………………………………………………… 310

Начало работы………………………………………………………………………………………………………………………………… 310

Конфигурирование транспорта, используемого по умолчанию…………………………………………………………….. 310

Отправка через SMTP………………………………………………………………………………………………………………………….. 311

Отправка нескольких сообщений за одно SMTP-соединение…………………………………………………………………… 311

Использование различных транспортов………………………………………………………………………………………………… 312

Сообщение в формате HTML………………………………………………………………………………………………………………… 313

Вложения………………………………………………………………………………………………………………………………………….. 313

Добавление получателей……………………………………………………………………………………………………………………. 314

Контроль за разделителями MIME……………………………………………………………………………………………………….. 314

Дополнительные заголовки………………………………………………………………………………………………………………… 314

Наборы символов……………………………………………………………………………………………………………………………….. 314

Кодировка…………………………………………………………………………………………………………………………………………. 315

SMTP-аутентификация………………………………………………………………………………………………………………………… 315

Securing SMTP Transport………………………………………………………………………………………………………………………. 316

Zend_Navigation…………………………………………………………………………………………………………………………………. 317

Введение…………………………………………………………………………………………………………………………………………… 317

Страницы и контейнеры…………………………………………………………………………………………………………………… 317

Страницы……………………………………………………………………………………………………………………………………….. 317

Контейнеры……………………………………………………………………………………………………………………………………. 317

Разделение данных (модели) и отображения (вида)…………………………………………………………………………… 317

Страницы…………………………………………………………………………………………………………………………………………… 318

Общие функциональные возможности страниц…………………………………………………………………………………… 318

Zend_Navigation_Page_Mvc………………………………………………………………………………………………………………. 320

Zend_Navigation_Page_Uri………………………………………………………………………………………………………………… 323

Creating custom page types………………………………………………………………………………………………………………… 323

Creating pages using the page factory…………………………………………………………………………………………………… 324

Zend_Paginator…………………………………………………………………………………………………………………………………… 327

Введение…………………………………………………………………………………………………………………………………………… 327

Использование…………………………………………………………………………………………………………………………………… 327

Разбиение наборов данных на страницы……………………………………………………………………………………………. 327

Адаптеры DbSelect и DbTableSelect……………………………………………………………………………………………………. 328

Рендеринг страниц через скрипты видов……………………………………………………………………………………………. 329

Примеры постраничной навигации……………………………………………………………………………………………………. 331

Список свойств………………………………………………………………………………………………………………………………… 333

Конфигурация…………………………………………………………………………………………………………………………………….. 334

Расширенное использование………………………………………………………………………………………………………………. 334

Создание собственных адаптеров к источникам данных………………………………………………………………………. 334

Создание своих стилей прокрутки……………………………………………………………………………………………………… 334

Возможности кэширования………………………………………………………………………………………………………………. 335

Интерфейс Zend_Paginator_AdapterAggregate…………………………………………………………………………………….. 336

Zend_Registry……………………………………………………………………………………………………………………………………… 338

Использование реестра………………………………………………………………………………………………………………………. 338

Установка значений в реестре…………………………………………………………………………………………………………… 338

Получение значений из реестра………………………………………………………………………………………………………… 338

Создание объекта реестра……………………………………………………………………………………………………………….. 338

Доступ к реестру как к массиву………………………………………………………………………………………………………….. 339

Доступ к реестру как к объекту…………………………………………………………………………………………………………. 339

Проверка существования индекса……………………………………………………………………………………………………… 340

Создание подклассов……………………………………………………………………………………………………………………….. 341

Уничтожение статического реестра…………………………………………………………………………………………………… 341

Zend_Search_Lucene…………………………………………………………………………………………………………………………… 341

Обзор……………………………………………………………………………………………………………………………………………….. 341

Введение……………………………………………………………………………………………………………………………………….. 341

Объекты документа и поля………………………………………………………………………………………………………………. 342

Значение типов полей……………………………………………………………………………………………………………………… 344

HTML-документы…………………………………………………………………………………………………………………………….. 344

Индексация……………………………………………………………………………………………………………………………………….. 347

Создание нового индекса…………………………………………………………………………………………………………………. 347

Обновление индекса………………………………………………………………………………………………………………………….. 347

Обновление документов………………………………………………………………………………………………………………….. 347

Получение размера индекса…………………………………………………………………………………………………………….. 348

Оптимизация индекса………………………………………………………………………………………………………………………. 348

Опция автоматической оптимизации MaxBufferedDocs………………………………………………………………………… 350

Опция автоматической оптимизации MaxMergeDocs…………………………………………………………………………… 350

Опция автоматической оптимизации MergeFactor……………………………………………………………………………….. 350

Ограничения…………………………………………………………………………………………………………………………………… 351

Поиск по индексу……………………………………………………………………………………………………………………………….. 351

Построение запросов………………………………………………………………………………………………………………………. 351

Парсинг запроса………………………………………………………………………………………………………………………………. 352

Результаты поиска……………………………………………………………………………………………………………………………… 353

Ранжирование результата………………………………………………………………………………………………………………… 354

Сортировка результатов поиска………………………………………………………………………………………………………… 354

Подсветка результатов поиска………………………………………………………………………………………………………….. 355

Язык запросов……………………………………………………………………………………………………………………………………. 355

Элементы………………………………………………………………………………………………………………………………………. 355

Поля………………………………………………………………………………………………………………………………………………. 356

Модификаторы элементов……………………………………………………………………………………………………………….. 356

Поиск по критерию близости…………………………………………………………………………………………………………….. 356

Усиление элемента…………………………………………………………………………………………………………………………. 357

Булевы операторы………………………………………………………………………………………………………………………….. 357

AND………………………………………………………………………………………………………………………………………… 357

OR…………………………………………………………………………………………………………………………………………… 357

NOT…………………………………………………………………………………………………………………………………………. 358

Операторы &&, ||, и !………………………………………………………………………………………………………………………. 358

+………………………………………………………………………………………………………………………………………………. 358

-……………………………………………………………………………………………………………………………………………….. 358

Отсутствие оператора………………………………………………………………………………………………………………………. 358

Групирование…………………………………………………………………………………………………………………………………. 358

Группирование полей……………………………………………………………………………………………………………………… 359

Экранирование специальных символов……………………………………………………………………………………………… 359

API для построения запросов……………………………………………………………………………………………………………….. 360

Исключения, бросаемые парсером запросов……………………………………………………………………………………… 360

Простой запрос (запрос по одному ключевому слову)………………………………………………………………………….. 360

Составной запрос (запрос по нескольким ключевым словам)……………………………………………………………….. 360

Фразовый запрос…………………………………………………………………………………………………………………………….. 362

Кодировки…………………………………………………………………………………………………………………………………………. 365

Поддержка UTF-8 и однобайтных наборов символов…………………………………………………………………………… 365

Используемый по умолчанию анализатор текста………………………………………………………………………………… 365

Совместимый с UTF-8 анализатор текста…………………………………………………………………………………………….. 365

Расширяемость………………………………………………………………………………………………………………………………….. 366

Анализ текста………………………………………………………………………………………………………………………………….. 366

Фильтрация лексем…………………………………………………………………………………………………………………………. 368

Алгоритмы ранжирования………………………………………………………………………………………………………………… 370

Контейнеры хранения……………………………………………………………………………………………………………………… 371

Взаимодействие с Java Lucene………………………………………………………………………………………………………………. 375

Форматы файлов……………………………………………………………………………………………………………………………… 375

Директория для индекса………………………………………………………………………………………………………………….. 375

Исходный код Java…………………………………………………………………………………………………………………………… 375

Zend_Session………………………………………………………………………………………………………………………………………. 376

Введение…………………………………………………………………………………………………………………………………………… 376

Базовое использование………………………………………………………………………………………………………………………. 377

Учебные примеры…………………………………………………………………………………………………………………………… 377

Итерация по пространствам имен……………………………………………………………………………………………………… 378

Методы доступа для пространств имен……………………………………………………………………………………………… 378

Расширенное использование………………………………………………………………………………………………………………. 380

Старт сессии……………………………………………………………………………………………………………………………………. 380

Блокировка пространств имен………………………………………………………………………………………………………….. 381

Время жизни пространства имен……………………………………………………………………………………………………….. 382

Инкапсуляция сессий и контроллеры…………………………………………………………………………………………………. 383

Ограничение количества экземпляров Zend_Session_Namespace до одного на каждое пространство имен.. 384

Работа с массивами в пространствах имен………………………………………………………………………………………….. 385

Использование сессий вместе с аутентификацией……………………………………………………………………………….. 386

Использование сессий с юнит-тестами……………………………………………………………………………………………….. 387

Общее управление сессиями……………………………………………………………………………………………………………….. 390

Zend_Session::setOptions()……………………………………………………………………………………………………………….. 390

Опции……………………………………………………………………………………………………………………………………………. 391

regenerateId()…………………………………………………………………………………………………………………………………. 392

Введение: идентификаторы сессий…………………………………………………………………………………………… 392

Угон и фиксация сессии…………………………………………………………………………………………………………… 394

rememberMe(integer $seconds)…………………………………………………………………………………………………………. 395

forgetMe()………………………………………………………………………………………………………………………………………. 396

sessionExists()………………………………………………………………………………………………………………………………….. 396

destroy(bool $remove_cookie = true, bool $readonly = true)……………………………………………………………………. 396

stop()……………………………………………………………………………………………………………………………………………… 396

writeClose($readonly = true)………………………………………………………………………………………………………………. 396

expireSessionCookie()……………………………………………………………………………………………………………………….. 397

setSaveHandler(Zend_Session_SaveHandler_Interface $interface)……………………………………………………………. 397

namespaceIsset($namespace)……………………………………………………………………………………………………………. 397

namespaceUnset($namespace)………………………………………………………………………………………………………….. 397

namespaceGet($namespace)……………………………………………………………………………………………………………… 397

getIterator()…………………………………………………………………………………………………………………………………….. 398

Zend_Validate…………………………………………………………………………………………………………………………………….. 399

Введение…………………………………………………………………………………………………………………………………………… 399

Что такое валидатор?………………………………………………………………………………………………………………………. 399

Базовое использование валидаторов…………………………………………………………………………………………………. 399

Установка собственных сообщений от ошибках…………………………………………………………………………………… 400

Использование статического метода is()…………………………………………………………………………………………….. 401

Перевод сообщений………………………………………………………………………………………………………………………… 402

Цепочки валидаторов…………………………………………………………………………………………………………………………. 402

Написание валидаторов………………………………………………………………………………………………………………………. 403

Zend_View………………………………………………………………………………………………………………………………………….. 408

Введение…………………………………………………………………………………………………………………………………………… 408

Скрипт контроллера………………………………………………………………………………………………………………………… 408

Скрипт вида……………………………………………………………………………………………………………………………………. 408

Опции……………………………………………………………………………………………………………………………………………. 409

Короткие теги в скриптах вида………………………………………………………………………………………………………….. 410

Вспомогательные аксессоры…………………………………………………………………………………………………………….. 411

Скрипты контроллеров……………………………………………………………………………………………………………………….. 411

Установка переменных……………………………………………………………………………………………………………………. 411

Выполнение скрипта вида………………………………………………………………………………………………………………… 412

Пути к скриптам вида……………………………………………………………………………………………………………………….. 412

Скрипты видов…………………………………………………………………………………………………………………………………… 413

Экранирование вывода……………………………………………………………………………………………………………………. 414

Использование других шаблонизаторов…………………………………………………………………………………………….. 415

Шаблонизаторы c использованием скриптов видов…………………………………………………………………………….. 415

Шаблонизаторы с использованием Zend_View_Interface……………………………………………………………………… 416

Помощники видов………………………………………………………………………………………………………………………………. 422

Начальный набор помощников…………………………………………………………………………………………………………….. 422

Помощник Action…………………………………………………………………………………………………………………………….. 426

Zend_Acl

Введение

Zend_Acl предоставляет легковесную и гибкую реализацию списка прав доступа (ACL) и управления привилегиями. Приложение может использовать такие списки для контроля доступа одних объектов к другим – защищенным.

В рамках данной документации,

  • Ресурс – объект, доступ к которому контролируется.
  • Роль – объект, который может запрашивать доступ к ресурсу.

Говоря проще, роли запрашивают доступ к ресурсам. Например, если парковщик запрашивает доступ к автомобилю, то парковщик – это роль, а автомобиль – ресурс, поскольку доступ к автомобилю не может предоставляться всем без исключения.

Благодаря спецификации и использованию списка прав доступа (ACL) приложение может контролировать предоставление ролям доступа к ресурсам.

Ресурсы

Создать ресурс в Zend_Acl очень просто. Zend_Acl предоставляет интерфейс ресурса Zend_Acl_Resource_Interface для облегчения процесса создания ресурса. Этот интерфейс содержит только один метод, getResourceId(). Классу достаточно реализовывать этот интерфейс для того, чтобы Zend_Acl рассматривал объект этого класса как ресурс. Кроме того, Zend_Acl предоставляет Zend_Acl_Resource в качестве базового класса, который разработчики могут расширять по желанию.

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

Zend_Acl также поддерживает права доступа к ресурсам (например, “создание”, “чтение”, “обновление”, “удаление”), разработчик может присваивать правила, которые будут влиять на все или определенные права доступа к ресурсу.

Роли

Как и в случае с ресурсами, создавать роль тоже очень просто. Все роли должны реализовывать интерфейс Zend_Acl_Role_Interface. Этот интерфейс содержит единственный метод getRoleId(). Кроме того, Zend_Acl предоставляет Zend_Acl_Role в качестве базового класса, который разработчики могут расширять по желанию.

В Zend_Acl роль может наследовать от одной или от нескольких ролей. Это реализовано для поддержки наследования правил между ролями. Например, пользовательская роль, такая как “Салли”, может принадлежать одной или нескольким родительским ролям, таким как “редактор” и “администратор”. Разработчик может привязывать правила к “редактору” и “администратору” раздельно, и “Салли” будет наследовать правила обоих ролей. Нет необходимости привязывать правила непосредственно к “Салли”.

Хотя множественное наследование ролей – очень полезная возможность, она также усложняет разработку. Следующий пример демонстрирует неопределенное условие и показывает, как Zend_Acl решает эту проблему.

Example #1 Множественное наследование ролей

Следующий код определяет три базовые роли: “guest“, “member” и “admin“, от которых будут наследовать другие роли. Далее создается “someUser“, он наследует от этих только что созданных трех ролей. Порядок, в котором эти роли появляются в массиве $parents, важен. При необходимости Zend_Acl ищет правила доступа не только для запрашиваемых ролей (в нашем случае, “someUser“), но и для ролей, от которых запрашиваемая роль унаследована (в нашем примере, “guest“, “member” и “admin“):

1.  $acl = new Zend_Acl();

2.

3.  $acl->addRole(new Zend_Acl_Role(‘guest’))

4.      ->addRole(new Zend_Acl_Role(‘member’))

5.      ->addRole(new Zend_Acl_Role(‘admin’));

6.

7.  $parents = array(‘guest’, ‘member’, ‘admin’);

8.  $acl->addRole(new Zend_Acl_Role(‘someUser’), $parents);

9.

10.$acl->add(new Zend_Acl_Resource(‘someResource’));

11.

12.$acl->deny(‘guest’, ‘someResource’);

13.$acl->allow(‘member’, ‘someResource’);

14.

15.echo $acl->isAllowed(‘someUser’, ‘someResource’) ? ‘разрешен’ : ‘запрещен’;

Поскольку нет правил, определенных специально для роли “someUser” и ресурса “someResource“, то Zend_Acl должен производить поиск правил, которые могут быть определены для ролей, от которых “someUser” наследуется. Сперва проверяется роль “admin“, и обнаруживается, что для нее не определены правила доступа. Затем проверяется роль “member“, и Zend_Acl обнаруживает, что есть правило разрешающее доступ для “member” к “someResource“.

Download Zend Framework Reference

This entry was posted in Zend framework and tagged , , , , . Bookmark the permalink.