1.2 Zend Framework — Быстрый старт. Создание проекта

Zend, “Zend Framework Quick Start. Create Your Project”, public translation into Russian from English More about this translation.

Translate into another language.

Перед созданием проекта вы должны загрузить и распаковать Zend Framework.

Установка Zend Framework

Простейший путь получить Zend Framework вместе с настроенным PHP — это установить » Zend Server. Zend Server имеет инсталлятор для Mac OSX, Windows, Fedora Core и Ubuntu, а также универсальный установочный пакет совместимый с большинством дистрибутивов Linux.

После установки Zend Server файлы фреймворка можно найти в папке /usr/local/zend/share/ZendFramework на Mac OSX и Linux, и в C:\Program Files\Zend\ZendServer\share\ZendFramework — на Windows. Переменная include_path уже будет сконфигурирована для включения Zend Framework.

Вы также можете загрузить последнюю версию Zend Framework и распаковать содержимое; обратите внимание на адрес папки назначения.

По желанию, вы можете добавить путь к подкаталогу library/ архива в вашу переменную include_path в php.ini.

Вот и все! Zend Framework установлен и готов к использованию.

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

Замечание: zf Command Line Tool

В установленном Zend Framework есть подкаталог bin/, содержащий скрипты zf.sh и zf.bat для Unix- и Windows-систем, соответственно. Запомните полный путь к этому скрипту.

Везде, где встретите ссылку на команду zf, замените полный путь к скрипту. На Unix-подобных системах вы можете использовать alias подобно: alias zf.sh=path/to/ZendFramework/bin/zf.sh.

Если у вас возникнут проблемы с настройкой zf command-line tool, обратитесь к руководству пользователя.

Откройте терминал (в Windows: Пуск -> Выполнить, введите cmd). Перейдите в каталог, где вы будете создавать проект. Используя путь к соответствующему скрипту, выполните следующее:

01. % zf create project quickstart

В результате выполнения этой команды будет создана простейшая структура сайта, включающая исходные контроллеры (controllers) и виды (views). Дерево каталогов будет выглядеть следующим образом:

01. quickstart

02. |-- application

03. | |-- Bootstrap.php

04. | |-- configs

05. | | `-- application.ini

06. | |-- controllers

07. | | |-- ErrorController.php

08. | | `-- IndexController.php

09. | |-- models

10. | `-- views

11. | |-- helpers

12. | `-- scripts

13. | |-- error

14. | | `-- error.phtml

15. | `-- index

16. | `-- index.phtml

17. |-- library

18. |-- public

19. | |-- .htaccess

20. | `-- index.php

21. `-- tests

22. |-- application

23. | `-- bootstrap.php

24. |-- library

25. | `-- bootstrap.php

26. `-- phpunit.xml

Если вы еще не добавили путь к файлам Zend Framework в include_path, рекомендуем либо скопировать их в каталог library/, либо создать символьную ссылку на нее. В любом случае, либо рекурсивно скопируйте каталог library/Zend/ установленного Zend Framework в каталог library/ вашего проекта, либо создайте символьную ссылку. На Unix-подобных системах это можно сделать следующим образом:

01. # Symlink:

02. % cd library; ln -s path/to/ZendFramework/library/Zend .

03.

04. # Copy:

05. % cd library; cp -r path/to/ZendFramework/library/Zend .

На Windows-системах это проще сделать с помощью "Проводника" (Explorer).

Теперь, когда проект создан, главное - разобраться с предзагрузчиком (bootstrap), конфигурацией (configuration), контроллерами действий (action controllers) и видами (views).

Предзагрузчик (bootstrap)

Ваш класс предзагрузчика (bootstrap class) определяет, какие ресурсы и компоненты будут инициализированы. По умолчанию, Zend Framework инициализирует Front Controller и использует application/controllers/ как каталог, в котором хранятся контроллеры действий (более подробно об этом позже). Класс выглядит следующим образом:

01. // application/Bootstrap.php

02.

03. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap

04. {

05. }

Как видите, для начала нужно совсем немного.

Конфигурация

Поскольку Zend Framework сам по себе не сконфигурирован, вам часто придется самому конфигурировать ваше приложение. По умолчанию, конфигурация прописывается в файле application/configs/application.ini и содержит некоторые основные директивы для настройки PHP-окружения (например, включение и отключение отчетов об ошибках), где указывается и путь к классу предзагрузчика (а также его имя) и путь к контроллерам действий. Выглядит это следующим образом:

01. ; application/configs/application.ini

02.

03. [production]

04. phpSettings.display_startup_errors = 0

05. phpSettings.display_errors = 0

06. includePaths.library = APPLICATION_PATH "/../library"

07. bootstrap.path = APPLICATION_PATH "/Bootstrap.php"

08. bootstrap.class = "Bootstrap"

09. appnamespace = "Application"

10. resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"

11. resources.frontController.params.displayExceptions = 0

12.

13. [staging : production]

14.

15. [testing : production]

16. phpSettings.display_startup_errors = 1

17. phpSettings.display_errors = 1

18.

19. [development : production]

20. phpSettings.display_startup_errors = 1

21. phpSettings.display_errors = 1

Приведем некоторые сведения о файле конфигурации, которые нужно знать. Во-первых, когда используется конфигурация в стиле "INI", вы можете напрямую ссылаться на константы и добавлять их; APPLICATION_PATH фактически является константой. Кроме того, обратите внимание, что определено несколько секций: production, staging, testing и development. Последние три наследуют настройки секции "production". Этот путь организации конфигурации гарантирует, что соответствующие настройки доступны на каждом этапе разработки приложения.

Контроллеры действий

Контроллеры действий (action controllers) являются основной частью вашего приложения и обрабатывают запросы, используя соответствующие модели (models) и виды (views).

Контроллер действия содержит один или несколько методов, название которых оканчивается на «Action»; эти методы могут быть запрошены через сеть. По умолчанию, ссылки URL в Zend Framework строятся по следующей схеме /controller/action, где «controller» — это имя контроллера действия (минус суффикс «Controller»), а «action» — это имя метода действия (минус суффикс «Action»).

Обычно необходимы следующие контроллеры: IndexController, который является контроллером по умолчанию, а также служит домашней страницей сайта, и ErrorController, который используется для отображения таких объектов, как ошибки HTTP 404 (когда контроллер или действие не найдены) и HTTP 500 (ошибки приложения).

По умолчанию, IndexController выглядит следующим образом:

01. // application/controllers/IndexController.php

02.

03. class IndexController extends Zend_Controller_Action

04. {

05.

06. public function init()

07. {

08. /* Здесь инициализация контроллера действий */

09. }

10.

11. public function indexAction()

12. {

13. // action body

14. }

15. }

ErrorController, созданный по умолчанию:

01. // application/controllers/ErrorController.php

02.

03. class ErrorController extends Zend_Controller_Action

04. {

05.

06. public function errorAction()

07. {

08. $errors = $this->_getParam('error_handler');

09.

10. switch ($errors->type) {

11. case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ROUTE:

12. case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:

13. case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:

14.

15. // ошибка 404 -- не найдены контроллер или действие

16. $this->getResponse()->setHttpResponseCode(404);

17. $this->view->message = 'Page not found';

18. break;

19. default:

20. // ошибка приложения

21. $this->getResponse()->setHttpResponseCode(500);

22. $this->view->message = 'Application error';

23. break;

24. }

25.

26. $this->view->exception = $errors->exception;

27. $this->view->request = $errors->request;

28. }

29. }

Заметьте, что IndexController фактически не содержит кода, а ErrorController ссылается на представление вида "view". И это приводит нас к следующей теме.

Виды

Виды (views) в Zend Framework пишутся на чистом старом PHP. Скрипты видов хранятся в папке application/views/scripts/, где они далее распределяются по категориям с помощью имен контроллеров. В нашем случае мы имеем IndexController и ErrorController и соответствующие подкаталоги index/ и error/ внутри каталога с нашими скриптами видов. Внутри этих подкаталогов находятся и создаются скрипты видов, которые соответствуют каждому контроллеру действия; таким образом, в случае по умолчанию у нас есть скрипты видов index/index.phtml и error/error.phtml.

Скрипты видов могут содержать любую необходимую вам разметку, а также открывающие и закрывающий теги для вставки PHP-команд - <?php и ?>.

Далее приведен скрипт вида для index/index.phtml, создаваемый по умолчанию:

01. <!-- application/views/scripts/index/index.phtml -->

02. <style>

03.

04. a:link,

05. a:visited

06. {

07. color: #0398CA;

08. }

09.

10. span#zf-name

11. {

12. color: #91BE3F;

13. }

14.

15. div#welcome

16. {

17. color: #FFFFFF;

18. background-image: url(http://framework.zend.com/images/bkg_header.jpg);

19. width: 600px;

20. height: 400px;

21. border: 2px solid #444444;

22. overflow: hidden;

23. text-align: center;

24. }

25.

26. div#more-information

27. {

28. background-image: url(http://framework.zend.com/images/bkg_body-bottom.gif);

29. height: 100%;

30. }

31.

32. </style>

33. <div id="welcome">

34. <h1>Welcome to the <span id="zf-name">Zend Framework!</span><h1 />

35. <h3>This is your project's main page<h3 />

36. <div id="more-information">

37. <p>

38. <img src="http://framework.zend.com/images/PoweredBy_ZF_4LightBG.png" />

39. </p>

40.

41. <p>

42. Helpful Links: <br />

43. <a href="http://framework.zend.com/">Zend Framework Website</a> |

44. <a href="http://framework.zend.com/manual/en/">Zend Framework

45. Manual</a>

46. </p>

47. </div>

48. </div>

49.

Скрипт вида error/error.phtml немного более интересен, так как в нем используются некоторые PHP-инструкции:

01. <!-- application/views/scripts/error/error.phtml -->

02. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN";

03. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd>

04. <html xmlns="http://www.w3.org/1999/xhtml">

05. <head>

06. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

07. <title>Zend Framework Default Application</title>

08. </head>

09. <body>

10. <h1>An error occurred</h1>

11. <h2><?php echo $this->message ?></h2>

12.

13. <?php if ('development' == $this->env): ?>

14.

15. <h3>Exception information:</h3>

16. <p>

17. <b>Message:</b> <?php echo $this->exception->getMessage() ?>

18. </p>

19.

20. <h3>Stack trace:</h3>

21. <pre><?php echo $this->exception->getTraceAsString() ?>

22. </pre>

23.

24. <h3>Request Parameters:</h3>

25. <pre><?php echo var_export($this->request->getParams(), 1) ?>

26. </pre>

27. <?php endif ?>

28.

29. </body>

30. </html>

Создание виртуального хоста

В рамках данного краткого руководства мы предположим, что вы используете веб-сервер Apache. Zend Framework полностью работоспособен и на других серверах, таких как: Microsoft Internet Information Server, lighttpd, nginx и других, - но большинство разработчиков должно быть знакомо, как минимум, с сервером Apache, на базе которого можно быстро изучить дерево каталогов и возможности перерегистрации в Zend Framework.

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

• /etc/httpd/httpd.conf (Fedora, RHEL, и др.)

• /etc/apache2/httpd.conf (Debian, Ubuntu, и др.)

• /usr/local/zend/etc/httpd.conf (Zend Server на *nix-системах)

• C:\Program Files\Zend\Apache2\conf (Zend Server на Windows-системах)

Внутри httpd.conf (или httpd-vhosts.conf в некоторых системах) вам необходимо сделать две вещи. Во-первых, обеспечить чтобы NameVirtualHost был определен. Обычно его значение установлено как "*:80". Во-вторых, определить виртуальный хост:

01. <VirtualHost *:80>

02. ServerName quickstart.local

03. DocumentRoot /path/to/quickstart/public

04.

05. SetEnv APPLICATION_ENV "development"

06.

07. <Directory /path/to/quickstart/public>

08. DirectoryIndex index.php

09. AllowOverride All

10. Order allow,deny

11. Allow from all

12. </Directory>

13. </VirtualHost>

Здесь обратите внимание на следующее: во-первых, заметьте, параметр DocumentRoot указывает на подкаталог public вашего проекта. Это означает, что только файлы этой поддиректории могут быть непосредственно использованы сервером. Во-вторых, обратите внимание на директивы AllowOverride, Order и Allow - они позволяют использовать файлы htacess внутри нашего проекта. Во время разработки это хорошая практика, так как это предотвращает необходимость постоянно перезапускать веб-сервер, как только вы сделаете изменения в директивах сайта. Тем не менее, для рабочей версии лучше поместите содержимое файла htaccess в конфигурационный файл сервера и отключите эту возможность. В-третьих, обратите внимание на директиву SetEnv. С ее помощью устанавливается переменная окружения для виртуального хоста. Эта переменная будет взята из index.php и использована для установки константы APPLICATION_ENV для нашего Zend Framework приложения. В рабочей версии вы можете пренебречь этой директивой (в этом случае она по умолчанию будет иметь значение "production") или установить ее явно в "production".

И, наконец, вам необходимо добавить запись в файл hosts, соответствующую значению, которое вы указали в директиве ServerName. В *nix-совместимых системах это, как правило, /etc/hosts; в Windows он обычно находится в папке C:\WINDOWS\system32\drivers\etc. Независимо от системы запись будет выглядеть так:

01. 127.0.0.1 quickstart.local

Запустите ваш веб-сервер (или перезапустите), и вы будете готовы двигаться дальше.

Контрольная точка (checkpoint)

На данном этапе вы должны уметь запускать приложение Zend Framework с его исходными настройками. Укажите в вашем браузере имя сервера, которое вы настроили в предыдущем разделе; при этом вы должны увидеть страницу приветствия.

Pages: ← previous Ctrl next
1 2 3

Original (English): Zend Framework Quick Start. Create Your Project

Translation: © antdmi, Rrr .

translatedby.com crowd

Like this translation? Share it or bookmark!