Начинаем работу с Zend Framework
|
Опубликовано: 02.02.2008
|
Материал данной статьи во многом базируется на русскоязычной документации Zend Framework (как известно, лучший учебник это мануал), кроме этого в интернете можно найти ряд подобных статей, но все же что бы не нарушать логическую цепочку начнем.
Установка Zend Framework
При работе с фреймворком использованы следующие версии программного обеспечения:
php 5.2.5, отметим что фреймворк накладывает свои требования на версию php, она должна быть 5.2.4. (на дату 26.02.09) или старше
mysql 5.1
apache 1.3.27
Итак начнём. Для начала скачиваем последний стабильный релиз фреймворка.
В идеале создаем отдельный виртуальный хост на котором мы и будем проводить наши эксперименты. Мы назвали его ilovezf :), то есть наш сайт будет доступен по адресу http://ilovezf, но подойдет и просто стандартный document root.
Создаем следующую структуру директорий и необходимые файлы.
| applications/ | Собственно, папка с самим приложением |
| controllers/ | Здесь хранятся контроллеры |
| IndexController.php | Контроллер по умолчанию или индекс-контролле |
| models/ | Модели |
| views/ | Представления |
| scripts/ | |
| index/ | Представления для индекс - контроллера |
| index.phtml | Представление для action (действие) по умолчанию (indexAction) |
| error/ | Представления для контроллера ошибок |
| index.phtml | Представление для действия по умолчанию (indexAction) |
| libs | Cодержит папку Zend в котором находиться сам фреймворк |
| public/ | Папка с файлами с общим доступом |
| img/ | Различные графические обьекты |
| js/ | Javascript – скрипты |
| css/ | Таблицы каскадных стилей (css) |
| .htaccess | Файл настройки вебсервера |
| index.php | Точка входа |
В нашем случае document root это папка public. Остальные файлы вынесены с целью защиты от получения доступа к ним. (По желанию вы можете этого не делать, а разместить все ваши файлы внутри document root)
В архиве с фреймворком находим папку library/Zend , это и есть сердце нашего фреймворка, копируем эту папку в созданную папку libs
У вас должна получиться следующая структура директорий:
Файл public/.htaccess содержит следующий код:
RewriteBase /
RewriteRule .*$ index.php [L]
С помощью модуля apache mod_rewrite (механизм перенаправления входящих запросов), осуществляется перенаправление всех запросов к index.php. Если модуль mod_rewrite у вас не установлен или не работает - переходя по ссылкам вы будете получать ошибку 404. Будьте внимательны.
Файл index.php будет служить точкой входа в наше приложение.
Код файла public/index.php
<?php
set_include_path('z://home/ilovezf/libs'); // укажите физический путь к папке libs
require_once 'Zend/Controller/Front.php';
Zend_Controller_Front::run('../applications/controllers/'); // физический путь к папке с контроллерами
Возможно вас удивит что тег <?php не закрыт?. Таков стандарт кодирования Zend Framework. И действительно после непродолжительной практики вы убедитесь что данный подход позволяет перестраховаться от некоторых ошибок, кроме этого мы сэкономим время и место :)
Теперь перейдем к самому интересному к модели MVC
До того, как начать обсуждение контроллеров действий, нужно сначала понять, как обрабатываются запросы в Zend Framework. По умолчанию первая часть пути в URL соответствует контроллеру, а вторая - действию. Например, дан URL http://ilovezf/news/show. В нем путь /news/show будет соответствовать контроллеру news и действию show. Если не передано имя действия, то предполагается действие index; если не передано имя контроллера, то предполагается контроллер index (по соглашению Apache это соответствует DirectoryIndex).
Диспетчер Zend_Controller принимает значение контроллера и находит соответствующий ему класс. По умолчанию это имя контроллера, начинающееся с заглавной буквы и со словом Controller в конце. Таким образом, контроллер news будет соответствовать классу NewsController.
Аналогичным образом устанавливается соответствие значения действия методу класса контроллера. По умолчанию значение приводится к нижнему регистру и к нему присоединяется слово Action. Таким образом, в нашем примере выше действие show будет методом с именем ShowAction, и в итоге вызов метода будет выглядеть следующим образом: NewsController::showAction().
Итак, двигаемся дальше. Теперь приступим к созданию контроллера и действия, используемых по умолчанию. Как было замечено ранее, эти контроллер и действие должны оба называться index. Откройте файл application/controllers/IndexController.php и введите следующее:
<?php
require_once 'Zend/Controller/Action.php';
class IndexController extends Zend_Controller_Action {
public function indexAction() {
}
}
По умолчанию в Zend_Framework в качестве представления используется Zend_View. Каким образом определенной странице ставится в соответствие определенный шаблон? – очень просто. Если запрошен контроллер index и действие index (что произойдет при открытии страницы http://ilovezf) то будет отображен шаблон views/scripts/index/index.phtml. По аналогии для url http://ilovezf/news/show будет отображен шаблон application/views/scripts/news/show.phtml, конечно только в том случае если он существует. По умолчанию шаблоны имеют расширение .phtml. Zend Framework поддерживает возможность использования других систем отображения представления, в частности шаблонизатора Smarty, об этом будет рассказано в наших следующих статьях.
Файл application/views/scripts/index/index.phtml. содержит следующий код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1- transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru" id="html">
<head>
<title>I LOVE ZEND FRAMEWORK!</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
I LOVE ZEND FRAMEWORK!
</body>
</html>
И последнее, нам необходимо создать свой контроллер ошибок. По умолчанию Zend Framework ожидает что имеется контроллер ErrorController с методом errorAction. Создадим этот файл
Код файла application/controllers/ErrorController.php
<?php
require_once 'Zend/Controller/Action.php';
class ErrorController extends Zend_Controller_Action {
public function errorAction() {
}
} Для отображения сообщений о ошибке создадим файл отвечающий за представление
Код файла application/views/scripts/error/error.phtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1- transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru" id="html">
<head>
<title>I LOVE ZEND FRAMEWORK!</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
Some error happened!
</body>
</html> Теперь мы можем насладиться результатом нашей работы, он доступен по адресу http://ilovezf/, кроме этого он также доступен по адресу http://ilovezf/index и http://ilovezf/index/index.
Если вы все сделали правильно вы должны увидеть надпись "I LOVE ZEND FRAMEWORK!" В противном случае сработает обработчик ошибок, и вы увидете сообщение "Some error happened!"
К сожалению, в данной статье мы не затронули такую важную часть MVC как модель, в следующих статьях мы напишем об этом.
Поздравляем, вы создали ваш первый сайт с использованием Zend Framework!
Код можно скачать здесь (Код не содержит сам Zend Framework)
- Спрашивать почему у вас не работает код, для этого есть тема форума закрепленная за статьей.
- Спрашивать как реализовать ту или иную функциональность, для этого необходимо создать свою тему на форуме.
Комментарии для того чтобы: высказать свое аргументированное мнение о статье, указать какие участки вызывают непонимание, что нужно исправить/улучшить, просто сказать спасибо.
Комментарии имеют древовидную структуру.
Если вы хотите ответить на определенный комментарий - нажмите на ссылку "Ответить" возле этого комментария.

