Наконец-то, я написал вторую часть статьи. Работая в дизайн-студии я трачу много сил и времени, поетому некоторые мои запланированые статьи будут задерживаться.
Возможно, когда я уже привыкну, тогда и писаться будет быстрее. Ну это не самое главное, для меня очень важно, чтобы мой труд был кем-то оценен и хотя бы кому-то было интересно читать мои материалы. Так, ладно, что-то никак не начну. На чем мы остановились? Ах да, на написании полноценного (но простого) веб-сайта. В предыдущей части я остановился на создании файла начальной загрузки.
Итак, приступим!
Начнём с простого примера: допустим нам требуется написать раздел новости на нашем сайте. Для этого нам нужно будет создать базу данных, таблици в ней, котроллеры и скрипты вида (для Zend_View, но об этом позже). Создайте базу данных, и для того, чтобы избежать путаници в названиях, назовите ее «zf_db» (обратите внимание, что все буквы в нижнем регистре). Создайте в базе данных таблицу под названием «news» со следующими полями:
| Название | Тип | Нулевое значение? | Примечание |
| id | int(11) | нет | Primary key, Autoincrement |
| title | varchar(500) | нет | |
| description | text | нет | |
| full_text | text | нет |
|
Сперва нужно четко определится, каким функционалом мы наделим наше приложение. На главной странице мы будем отображать список всех новостей сайта, с возможностью их редактирования. Также будут кнопки для создания новости и её удаления. В итоге наше приложение должно иметь такой функционал:
- Вывод всех новостей сайта;
- Добавление новостей;
- Редактирование новостей;
- Удаление новостей;
Давайте ознакомися с основами создания страниц в Zend Framework. Согласно принятой терминологии, каждая страница веб-приложения определяется термином «действие». Действия, в свою очередь, объединяются в специальные группы — «контроллеры». Например, для URL http://localhost/web-blog.org.ua/news/view/ контроллером будет news, а действием — view. Контроллеры предназначены для объединения родственных действий.
В нашем случае будет один контроллер "news" и четире действия: add, edit, delete, index. Действие index - это действие которое выполняется по-умолчанию (если в адресе URL не задано какое-то другое действие).
Для того, чтобы создать необходимые контроллеры и действия, перейдите в папку «/application/controllers/». В Zend Framework контроллер представляет собой класс с именем типа {Имя_контроллера}Controller. Класс должен быть описан внутри файла с именем {Имя_контроллера}Controller.php. Как я уже писал выше, наш конроллер будет называться «news», поетому создайте файл «NewsController.php», а в нём напишите следующий код:
В этом файле мы объявили класс NewsController, который наследует класс Zend_Controller_Action из библиотеки фреймворка и специфические методы класса, которые оканчиваются словом «Action». Эти методы и есть действиями о которых я писал выше. Тоесть если Вы, например, обратитесь по адресу http://site/news/add/ - «запустится» NewsController, действие add (функция addAction()).
Всё. Осталось только наполнить данные действия кодом. Что мы сейчас и сделаем!
База данных и файл конфигурации
Для хранения настроек сайта (настройки для БД, пароли, директории) очень удобно использовать класс Zend_Config и xml файлы. Zend_Config даёт удобный интерфейс для чтения настроек базы данных и для их использования. Также есть класс Zend_Registry, который позволит получать доступ к переменным из любого места нашего приложения. Чтобы использовать всю эту красоту нужно дописать в файл index.php (до вызова метода dispatch() фронт-контроллера) следующие строчки:
В первой строчке мы загружаем конфигурационный файл. Во второй - сохраняем объект Zend_Config_Xml в реестр (подробнее о работе этих функций читайте в мануале). Далее мы создаём адаптер базы данных, передавая в конструктор настройки из конфигурационного файла и также сохраняем адаптер в реестр. Строка «Zend_Db_Table::setDefaultAdapter($dbAdapter);» устанавливает наш адаптер БД, как адаптер по-умолчанию для всех операций с БД.
Создайте файл «config.xml» (что именно вписать — читайте в мануале) в папке «application». Всё, базу данных мы сконфигурировали. Перейдём к наполнению кодом нашего приложения.
Наполняем приложение функционалом
Напишите такой код в NewsController.php:
Код очень простой, поэтому объяснать много не буду (тем более он хорошо задокументирован), если что - читайте мануал по использованным классам - там всё очень неплохо написано. Функция init() вызывается при создании класса, поэтому для удобства я сохранил адаптер БД в переменной класса.
Также я использовал очень удобную функцию — _redirect(), которая перенаправляет браузер на заданый адрес. Zend вообще логически понятен, самое сложное в нём - начать. Конечно, Вы можете сказать мне: «И что толку с этого фреймворка?».
Поясню: то, что Вы увидели, — очень тривиальные вещи и только со временем, когда Вы дойдёте до использования, например, классов Zend_Feed, Zend_Db_Table, Zend_Db_Table_Rowset или Zend_Db_Table_Row, тогда Вы оцените всю мощь и удобство Zend Framework. Также советую Вам обратить Ваше внимание на классы Zend_Controller_Router_Route и Zend_Cache.
Послесловие
На этих примерах мы с Вами научились работать с контроллерами, действиями, а также выполнять примитивные операции с базой данных. В следующей части моего рассказа я покажу Вам как использовать скрипты вида и как работать с Zend_View. В дальнейшем, я планирую ввести читателя в основы использования классов Zend_Db_Table, Zend_Db_Table_Rowset и Zend_Db_Table_Row.

)

