Pull to refresh

ZendFramework QuickStart — Создание Проекта

Reading time11 min
Views14K
Данная статья не является чем то сверхестественным и подойдет скорее для тех, кто начинает изучать
Zend Framework. Так уж получилось что сам я начинал изучение с версии
1.7, но незадолго после начала познания данного инструмента меня забрали в армию, и год я программированием не занимался. Сейчас до возвращения в родные края остался месяц, а так же появилось свободное время.
В начале изучения какого либо инструмента, как я заметил по себе всегда хочется иметь его под рукой, чтобы сразу же при возможности
поковыряться а не перечитывать предварительно кучу документации.
Так у меня было с Zend Framework, когда он был еще версии 1.7
Пришлось перечиать несколько статей и пересоздать кучу каталогов,
чтобы настроить рабочий Zend Framework проект. Собственно данная статья является своего рода переводом статьи Zend Framework Quick Start | Create Your Project для версии Zend Framework 1.10.5
С некоторыми исправлениями и примечаниями.
Прочитав ее я думаю вы с легкостью создадите рабочий Zend Framework
проект и сразу же перейдете к изучению на практике.

В общем то, если все же кому то статья покажется по вкусу, возьмусь
за перевод всех статей серии Quick Start.

Итак, поехали…


Установка Zend Framework


Для того, чтобы создать ваш проект, для начала вам необходимо скачать и распаковать Zend Framework.
Не буду вдаваться в подробности скачки, скажу лишь, что
он лежит где то здесь

Простейший путь, получить Zend Framework включая настроенный PHP — это установить Zend Server.
Zend Server имеет инсталляторы для таких операционных сисем, как: Mac OSX, Windows, Fedora Core, и Ubuntu.
Кроме того Zend Server так же имеет универсальный установочный пакет совместимый с большинством Linux дистрибьютивов.
После установки Zend Server'a, вы сможете найти Framework в каталоге /usr/local/zend/share/ на операционных системах MacOS X и Linux или в каталоге C:\Program Files\Zend\ZendServer\share\ZendFramework в операционной системе Windows.
Кроме того вы можете скачать последнюю версию Zend Framework в виде архива после чего распаковать его.

Создание проекта


Примечание: В каталоге где установлен Zend Framework находится подкаталог bin содержание сценарии:
zf.sh и zf.bat для Unix-based ОС и ОС Windows соответственно. Запомните абсолютный путь к этим сценариям.
Ниже будет использоваться команда zf. Для ее корректной работы замените путь к команде на абсолютный путь для вашей операционной системы. В Unix системах можно использовать alias.
Например так:
alias zf.sh=path/to/ZendFramework/bin/zf.sh
Если у вас возникли проблемы с использованием zf сценария, воспользуйтесь руководством

Откройте окно терминала (В Windows выпоните «Пуск»->«Выполнить»->«cmd») В консоли перейдите в каталог в котором вы хотите создать ваш проект. Затем, используйте сценарий zf для создания проекта.
Например так:
zf create project quickstart
В результате выполнения этой команды будет создан стандартный проект ZendFramework влючающий стандартные контроллеры и сценарии вида.
Дерево каталогов будет выглядеть следующим образом:
quickstart
|-- application
| |-- Bootstrap.php
| |-- configs
| | `-- application.ini
| |-- controllers
| | |-- ErrorController.php
| | `-- IndexController.php
| |-- models
| `-- views
| |-- helpers
| `-- scripts
| |-- error
| | `-- error.phtml
| `-- index
| `-- index.phtml
|-- library
|-- public
| |-- .htaccess
| `-- index.php
`-- tests
|-- application
| `-- bootstrap.php
|-- library
| `-- bootstrap.php
`-- phpunit.xml

Далее, если вы не указали путь к Zend Framework скриптам в include_path вашего php.ini файла, рекомендуется либо создать ссылку либо скопировать скрипты ZendFramework в каталог library/ вашего проекта.
В Unix системах это можно сделать следующим образом:
# Symlink:
% cd library; ln -s path/to/ZendFramework/library/Zend
# Copy:
% cd library; cp -r path/to/ZendFramework/library/Zend

Теперь когда проект создан можно перейти к разбору таких понятий как
Загрузчик (Bootstraper), Конфигурация (Configuration), Контроллеры действий (Action Controllers) и Сценарии Вида (Views).

The Bootstraper (Загрузчик)


Класс Bootstraper определяет, какие ресурсы и компоненты будут инициализированны в вашем проекте. По умолчанию инициализирован Front Controller, который использует каталог application/controllers/ как директорию по умолчанию для поиска контроллеров действий (их мы рассмотрим позже) Данный класс выглядит примерно следующим образом:
  1. // application/Bootstrap.php
  2. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
  3. {
  4. }
* This source code was highlighted with Source Code Highlighter.


Configuration (Конфигурация)


На данный момент ваш проект на Zend Framework уже более менее сконфигурирован. Однако в будующем вам в любом случае будет необходимо конфигурировать ваше приложение на свой вкус. Основной файл конфигурации по умолчанию хранится в файле: application/configs/application.ini и содержит основные директивы настройки вашей PHP среды (например включение и отклюение отчета об ошибках). Помимо этого в данном файле указан
путь к классу начальной загрузки (Bootstrap), и путь к контроллерам действий (Action Controllers).
Выглядит данный файл следующим образом:
; application/configs/application.ini
[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
[staging : production]
[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

Вот несколько вещей которые необходимо знать о файле конфигурации. При использовании ini конфигурационного файла вы можете использовать константы. APPLICATION_PATH — это константа. К тому же в данном файле определено несколько секций: production, staging, testing, и development. Последние три секции наследуют настройки из секции 'production'. Данное разбиение на категории хороший путь того, чтобы гарантировать доступность настроек на каждом этапе разработки.

Контроллеры действий (Action Controllers)


Контроллеры действий являются основной частью приложения и отвечают за обработку запросов, выбор данных из моделей (models) и передачу их в представления (views).
Коонтроллер действия должен иметь один или несколько методов заканчивающихся словом «Action», эти методы будут запускаться при запросе какой либо страницы вашего приложения. По умолчанию URL в Zend Framework следуют следующей схеме: "/controller/action" где controller — текущий контроллер, а action — текущее действие. Например: mysite/simple/test. Здесь Контроллер — simple а дейтсвие test.
Обычно приложение Zend Framework должно иметь два контроллера действия это IndexController — контроллер который является контроллером по умолчнаию или домашней страницей вашего сайта и ErrorController предназначеный для обработки ошибок таких как HTTP 404 (Страница не найдена) или HTTP 500 (Ошибка приложения).
IndexController присутствующий по умолчанию после создания проекта ZendFramework выглядит следующим образом:
  1.  
  2. // application/controllers/IndexController.php
  3. class IndexController extends Zend_Controller_Action
  4. {
  5.     public function init()
  6.     {
  7.         /* Initialize action controller here */
  8.     }
  9.     public function indexAction()
  10.     {
  11.         // action body
  12.     }
  13. }
* This source code was highlighted with Source Code Highlighter.

ErrorController созданный по умолчанию выглядит так:
  1. // application/controllers/ErrorController.php
  2. class ErrorController extends Zend_Controller_Action
  3. {
  4.     public function errorAction()
  5.     {
  6.         $errors = $this->_getParam('error_handler');
  7.         switch ($errors->type) {
  8.             case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ROUTE:
  9.             case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
  10.             case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:
  11.                 // 404 error -- controller or action not found
  12.                 $this->getResponse()->setHttpResponseCode(404);
  13.                 $this->view->message = 'Page not found';
  14.                 break;
  15.             default:
  16.                 // application error
  17.                 $this->getResponse()->setHttpResponseCode(500);
  18.                 $this->view->message = 'Application error';
  19.                 break;
  20.         }
  21.         $this->view->exception = $errors->exception;
  22.         $this->view->request  = $errors->request;
  23.     }
  24. }
* This source code was highlighted with Source Code Highlighter.

Необходимо отметить, что IndexController не имеет фактически ни какого кода, в то время как ErrorController ссылается на представление вида «view».

Сценарии вида (views)


Сценарии вида в Zend Framework по умолчанию используют простой php синтаксис. Сценарии вида находятся в каталоге application/views/scripts/, где они распределены по каталогам в зависимости от контроллера действия. Так например в нашем проекте существуют контроллеры IndexController и ErrorController, соответственно сценарии вида для них находятся в подкаталогах index/ и error/ В данных подкаталогах содержатся файлы типа *.phtml, которые являются сценариями вида для действий. Так по умолчанию мы имеем сценарии вида: index/index.phtml и error/error.phtml. Для Index контроллера и Error Контроллера соответственно.
Сценарии вида могут содержать какой угодно текст. Кроме того вы можете использовать php теги <?php ?> для вставки в них PHP директив.
Так выглядит сценарий вида для действия index контроллера indexController:
  1. <!-- application/views/scripts/index/index.phtml -->
  2. <style>
  3.     a:link,
  4.     a:visited
  5.     {
  6.         color: #0398CA;
  7.     }
  8.     span#zf-name
  9.     {
  10.         color: #91BE3F;
  11.     }
  12.     div#welcome
  13.     {
  14.         color: #FFFFFF;
  15.         background-image: url(http://framework.zend.com/images/bkg_header.jpg);
  16.         width: 600px;
  17.         height: 400px;
  18.         border: 2px solid #444444;
  19.         overflow: hidden;
  20.         text-align: center;
  21.     }
  22.     div#more-information
  23.     {
  24.         background-image: url(http://framework.zend.com/images/bkg_body-bottom.gif);
  25.         height: 100%;
  26.     }
  27. </style>
  28. <div id="welcome">
  29.     <h1>Welcome to the <span id="zf-name">Zend Framework!</span><h1 />
  30.     <h3>This is your project's main page<h3 />
  31.     <div id="more-information">
  32.         <p>
  33.             <img src="http://framework.zend.com/images/PoweredBy_ZF_4LightBG.png" />
  34.         </p>
  35.         <p>
  36.             Helpful Links: <br />
  37.             <a href="http://framework.zend.com/">Zend Framework Website</a> |
  38.             <a href="http://framework.zend.com/manual/en/">Zend Framework
  39.                 Manual</a>
  40.         </p>
  41.     </div>
  42. </div>
* This source code was highlighted with Source Code Highlighter.


А так выглядит сценарий вида для контроллера ошибок (Error Controller)
Заметим что в нем присутствуют некоторые PHP инструкции.
  1. <!-- application/views/scripts/error/error.phtml -->
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN";
  3.     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd>
  4. <html xmlns="http://www.w3.org/1999/xhtml">
  5. <head>
  6.  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  7.  <title>Zend Framework Default Application</title>
  8. </head>
  9. <body>
  10.  <h1>An error occurred</h1>
  11.  <h2><?php echo $this->message ?></h2>
  12.  <?php if ('development' == $this->env): ?>
  13.  <h3>Exception information:</h3>
  14.  <p>
  15.      <b>Message:</b> <?php echo $this->exception->getMessage() ?>
  16.  </p>
  17.  <h3>Stack trace:</h3>
  18.  <pre><?php echo $this->exception->getTraceAsString() ?>
  19.  </pre>
  20.  <h3>Request Parameters:</h3>
  21.  <pre><?php echo var_export($this->request->getParams(), 1) ?>
  22.  </pre>
  23.  <?php endif ?>
  24. </body>
  25. </html>
* This source code was highlighted with Source Code Highlighter.


Создание Виртуального Хоста (Virtual Host)


В данном примере будем использовать сервер Apache. Zend Framework отлично работает и с другими серверами такими как Microsoft IIS, lighthttpd, nginx и т.д, однако большинство разработчиков должны как минимум быть знакомы с Apache.

Для создания виртуального хоста вам необходимо знать местонахождение вашего файла httpd.conf
Вот перечень директорий где может находится файл конфигурации сервера Apache

/etc/httpd/httpd.conf (Fedora, RHEL, и другие)
/etc/apache2/httpd.conf (Debian, Ubuntu, и другие)
/usr/local/zend/etc/httpd.conf (Сервер Zend на *nix операционных системах)
C:\Program Files\Zend\Apache2\conf (Сервер Zend на ОС Windows)


В вашем файле httpd.conf (или httpd-vhosts.conf в некоторых системах), вам понадобится сделать две вещи. Сначала, проверьте, что NameVirtualHost определен; обычно "*:80".
Затем создаем вирутальный хост для вашего проекта:
<VirtualHost quickstart:80>
ServerName quickstart.local
DocumentRoot /path/to/quickstart/public
SetEnv APPLICATION_ENV "development"
<Directory /path/to/quickstart/public>
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all



Есть несколько вещей, которые вы должны знать. В директиве DocumentRoot указывается public/ каталог вашего проекта; AllowOverride, Order и Allow директивы должны быть настроены таким образом, чтобы позволять использовать .htacess файлы в пределах нашего проекта. В течение разработки, это — хорошая практика, так как отпадает необходимость, постоянного перезапуска сервера при смене некоторых директив в пределах вашего проекта. Тем не менее в production версии данные директивы должны быть настроены на запрет использования данного файла. В третьих вы должны установить директиву SetEnv. Здесь мы устанавливаем переменную среды для вашего виртуального хоста; которая в последствии будет включена в index.php и использована, чтобы устанавливить константу APPLICATION_ENV для нашего Zend Framework приложения. В production версии, вы можете опустить эту директиву.
Наконец, вам понадобится добавить ваш virtual host в файл hosts На *nix системах, он находится — обычно /etc/hosts; в Windows, вы найдете его в C:\WINDOWS\system32\drivers\etc.
Независимо от операционной системы, файл hosts будет выглядеть примерно следующим образом:
127.0.0.1 quickstart.local

Теперь запустите ваш Веб-сервер (или перезапустите его), и можете продолжать изучение Zend Framework.
Tags:
Hubs:
Total votes 48: ↑33 and ↓15+18
Comments21

Articles