Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Заметки Дизайнера" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
ZEND FRAMEWORK: Быстрый старт
Вниманию читателей!Отдельные выпуски рассылки в той или иной мере взаимосвязаны; особенно, это относится к материалам практических занятий. С предыдущими выпусками Вы можете ознакомиться:
Кроме того, для чтения в онлайне доступен сборник статей, составленный на основе выпусков рассылки. # # # Вы также можете подписаться на рассылку "PHP 5 для начинающих". |
PHP 5: Новые возможности.Содержание Предлагаемый материал объясняет, как работают приложения, разработанные на основе Zend Framework, и способствует быстрому практическому знакомству с их разработкой путем выполнения следующих действий.
В традиционном веб приложении отдельные страницы собраны в произвольной структуре директорий; при обращении к этим страницам в адресной строке зачастую передаются многочисленные параметры, что делает адрес громоздким, затрудняет его визуальное восприятие и, тем более, ручной набор (Пример 4.1, «Пример запроса в традиционном стиле»). Пример 4.1. Пример запроса в традиционном стиле http://www.example.com/forum/view.php?thread=1&message=123 Zend Framework предлагает принципиально иной подход к организации веб приложения. Практически все скрипты выносятся за пределы веб сайта (обычно в директорию, расположенную на один уровень выше корневой директории сайта). В корневой директории остается единственный скрипт -
Запрашиваемые URI уже не адресуются к реальным страницам на сайте, а содержат определенную информацию, управляющую работой приложения; все такие запросы перенаправляются в файл начальной загрузки. Находящийся в этом файле главный контроллер анализирует каждый запрос и, в зависимости от содержащейся в нем информации, передает его другому, более специализированному контроллеру. Этот процесс называется роутингом и далее будет рассмотрен более подробно («Роутинг»). Наконец, специализированный контроллер, в рамках запрошенного действия, создает соответствующий вид, снабжая его необходимыми данными. В результате такого подхода запрашиваемые адреса становятся более удобочитаемыми (Пример 4.2, «Пример запроса в современном стиле»), а безопасность приложения значительно повышается, так как скрипты теперь располагаются в недоступном через веб сайт месте. Пример 4.2. Пример запроса в современном стиле http://www.example.com/forum/view/thread/1/message/123 Рекомендуется использовать во всех приложениях на основе Zend Framework стандартную структуру директорий и файлов [9]. Это, по меньшей мере, облегчит понимание кода другими разработчиками, знакомыми с Zend Framework. Предлагаемая структура (Пример 4.3, «Рекомендуемая структура директорий») включает в себя библиотеку классов Zend Framework, библиотеку классов самого приложения, а также
файл начальной загрузки - главный контроллер ( Предполагается, что библиотека классов Zend Framework уже установлена в недоступном через веб сервер месте (см. «Установка»). Библиотеку классов приложения (их нам еще предстоит разработать) рекомендуется установить там же. Дерево директорий библиотеки классов приложения должно отражать использование им MVC шаблона, т. е. включать в себя отдельные директории для контроллеров, видов и модели данных. Остальные перечисленные компоненты предлагаемой структуры находятся в корневой директории веб сайта. Пример 4.3. Рекомендуемая структура директорий |---application/ | |---controllers/ | |---models/ | |---views/ | |---library/ | |---Zend/ | |---Zend.php | |---public_html/ | |---images/ | |---styles/ | |---.htaccess | |---index.php
Перенаправление запросов к серверу производится с целью концентрации их в одном-единственном файле начальной загрузки
( Для перенаправления воспользуемся директивами модуля mod_rewrite (см. «Требования к серверу»), включив их в конфигурационный файл веб сервера Предпочтительнее перенаправлять запросы по принципу «все, кроме...» (Пример 4.4, «Перенаправление с исключением отдельных типов файлов», Пример 4.5, «Перенаправление с исключением отдельных директорий»), т. е. указывать признаки только тех запросов, которые не будут перенаправлены - например, в большинстве случаев вряд ли целесообразно использовать Zend Framework для передачи в броузер изображений и страниц стилей.
Однако, если приложение разрабатывается на сайте с уже существующим самостоятельным контентом, то придется применить другую стратегию - указывать, какие директории следует перенаправлять Пример 4.6, «Альтернативный способ перенаправления». Далее займемся файлом Zend_Controller_Front::run(ZF_CONTROLLERS); Для успешной работы этой строке кода необходимы несколько подготовительных действий (Пример 4.7, «Файл начальной загрузки»), но именно она является центральной в будущем приложении, так как обеспечивает его базовую функциональность. В дальнейшем мы будем только наращивать эту функциональность, добавляя специализированные контроллеры и виды. Пример 4.7. Файл начальной загрузки <?php define('ZF_ROOT', realpath($_SERVER['DOCUMENT_ROOT'].'/../')); Специализированные контроллеры получают запросы от главного контроллера и выполняют затребованные действия. Для лучшего понимания этого процесса необходимо ознакомиться с тем, как именно трактуется в Zend Framework информация, содержащаяся в запросе. Каждому токену - части запрошенного адреса, которая отделена от других слэшем (косой чертой), присуще определенное значение. http://www.example.com/<controller>/<action>/ Первые два токена - протокол и название хоста - игнорируются, а вот следующие два трактуются как название специализированного контроллера, которому должно быть передано управление, и название действия, которое этот контроллер должен выполнить. Если один или оба эти токена отсутствуют,
то контроллер и/или действие принимают значение по умолчанию - Кроме того, запрос может содержать произвольное количество дополнительных параметров, представленных в виде пары «ключ/значение». http://www.example.com/<controller>/<action>/<key1>/<value1>/<key2>/<value2>/ Теперь рассмотрим, как будет обработан, например, следующий запрос. http://www.example.com/foo/bar/ Главный
контроллер, получив этот запрос, передаст управление специализированному контроллеру, представленному классом
Существует несколько постулатов, верных по отношению ко всем приложениям, разработанным на основе Zend Framework.
Пример 4.8. Класс
«Ответы и решения к Глава 4, Быстрый старт»
|
В избранное | ||