пятница, 27 июля 2012 г.

Старт Zend Framework

Взято с русского сообщества zend.
Автор: san, rashad
http://zendframework.ru/articles/zend_framework_start


Итак начнём. Для начала скачиваем последний стабильный релиз фреймворка.
В идеале создаем отдельный виртуальный хост на котором мы и будем проводить наши эксперименты. Мы назвали его ilovezf :), то есть наш сайт будет доступен по адресу http://ilovezf, но подойдет и просто стандартный document root.

Создаем следующую структуру директорий и необходимые файлы.
applications/Собственно, папка с самим приложением
controllers/Здесь хранятся контроллеры
IndexController.phpКонтроллер по умолчанию или индекс-контролле
models/Модели
views/Представления
scripts/
index/Представления для индекс - контроллера
index.phtmlПредставление для action (действие) по умолчанию (indexAction)
error/Представления для контроллера ошибок
index.phtmlПредставление для действия по умолчанию (indexAction)
libsCодержит папку Zend в котором находиться сам фреймворк
public/Папка с файлами с общим доступом
img/Различные графические обьекты
js/Javascript – скрипты
css/Таблицы каскадных стилей (css)
.htaccessФайл настройки вебсервера
index.phpТочка входа

В нашем случае document root это папка public. Остальные файлы вынесены с целью защиты от получения доступа к ним. (По желанию вы можете этого не делать, а разместить все ваши файлы внутри document root)

В архиве с фреймворком находим папку library/Zend , это и есть сердце нашего фреймворка, копируем эту папку в созданную папку libs

У вас должна получиться следующая структура директорий:



Файл public/.htaccess содержит следующий код:
RewriteEngine on
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'); // укажите физический путь к папке libsrequire_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!