Главная / Zend Manual Core
Введение

Zend_Application - Быстрый старт

Есть два пути для начала работы с Zend_Application и выбор одного из них зависит от того, как вы начинаете свой проект. В обоих случаях вы начинаете с создания класса Bootstrap и связанного с ним конфигурационного файла.

Если вы планируете использовать Zend_Tool для создания своего проекта, то продолжайте читать далее. Если вы добавляете Zend_Application на существующий проект, то можете сразу перейти к следующему разделу.

Использование вместе с Zend_Tool

Наиболее быстрый способ начать использование Zend_Application - использовать Zend_Tool для генерации вашего проекта. Он также создаст файл с классом Bootstrap.

Для того, чтобы создать проект, выполните команду zf на системе семейства *nix:

  1. % zf create project newproject

Или команду zf.bat на Windows:

  1. C:> zf.bat create project newproject

Обе создадут структуру проекта, которая будет выглядеть следующим образом:

  1. newproject
  2. |-- application
  3. |   |-- Bootstrap.php
  4. |   |-- configs
  5. |   |   `-- application.ini
  6. |   |-- controllers
  7. |   |   |-- ErrorController.php
  8. |   |   `-- IndexController.php
  9. |   |-- models
  10. |   `-- views
  11. |       |-- helpers
  12. |       `-- scripts
  13. |           |-- error
  14. |           |   `-- error.phtml
  15. |           `-- index
  16. |               `-- index.phtml
  17. |-- library
  18. |-- public
  19. |   `-- index.php
  20. `-- tests
  21.     |-- application
  22.     |   `-- bootstrap.php
  23.     |-- library
  24.     |   `-- bootstrap.php
  25.     `-- phpunit.xml

В схеме выше ваш файл загрузки - newproject/application/Bootstrap.php, поначалу он будет выглядеть следующим образом:

  1. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
  2. {
  3. }

Также обратите внимание, что был создан конфигурационный файл newproject/application/configs/application.ini. Его содержимое будет следующим:

  1. [production]
  2. phpSettings.display_startup_errors = 0
  3. phpSettings.display_errors = 0
  4. includePaths.library = APPLICATION_PATH "/../library"
  5. bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
  6. bootstrap.class = "Bootstrap"
  7. resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
  8.  
  9. [staging : production]
  10.  
  11. [testing : production]
  12. phpSettings.display_startup_errors = 1
  13. phpSettings.display_errors = 1
  14.  
  15. [development : production]
  16. phpSettings.display_startup_errors = 1
  17. phpSettings.display_errors = 1

Все установки в конфигурационном файле предназначены для использования с Zend_Application и вашим файлом загрузки.

Еще один файл, на который стоит обратить внимание - newproject/public/index.php, он создает экземпляр Zend_Application и запускает приложение.

  1. // Указание пути к директории приложения
  2. defined('APPLICATION_PATH')
  3.     || define('APPLICATION_PATH',
  4.               realpath(dirname(__FILE__) . '/../application'));
  5.  
  6. // Определение текущего режима работы приложения
  7. defined('APPLICATION_ENV')
  8.     || define('APPLICATION_ENV',
  9.               (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
  10.                                          : 'production'));
  11.  
  12. /** Zend_Application */
  13. require_once 'Zend/Application.php';
  14.  
  15. // Создание объекта приложения, начальная загрузка, запуск
  16. $application = new Zend_Application(
  17.     APPLICATION_ENV,
  18.     APPLICATION_PATH . '/configs/application.ini'
  19. );
  20. $application->bootstrap()
  21.             ->run();

Для того, чтобы продолжить "быстрый старт", перейдите к разделу про ресурсы.

Добавление Zend_Application в приложение

Основные положения работы с Zend_Application довольно просты:

  • Создайте файл application/Bootstrap.php с классом Bootstrap.

  • Создайте конфигурационный файл application/configs/application.ini с базовой конфигурацией, необходимой для Zend_Application.

  • Измените свой файл public/index.php с тем, чтобы использовался Zend_Application.

Сначала создайте свой загрузочный класс Bootstrap. Для этого создайте файл application/Bootstrap.php со следующим содержимым:

  1. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
  2. {
  3. }

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

  1. [production]
  2. phpSettings.display_startup_errors = 0
  3. phpSettings.display_errors = 0
  4. includePaths.library = APPLICATION_PATH "/../library"
  5. bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
  6. bootstrap.class = "Bootstrap"
  7. resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
  8.  
  9. [staging : production]
  10.  
  11. [testing : production]
  12. phpSettings.display_startup_errors = 1
  13. phpSettings.display_errors = 1
  14.  
  15. [development : production]
  16. phpSettings.display_startup_errors = 1
  17. phpSettings.display_errors = 1

Наконец, приступаем к изменению скрипта public/index.php. Если он не существует, то создайте его, иначе замените его содержимое на следующее:

  1. // Указание пути к директории приложения
  2. defined('APPLICATION_PATH')
  3.     || define('APPLICATION_PATH',
  4.               realpath(dirname(__FILE__) . '/../application'));
  5.  
  6. // Определение текущего режима работы приложения
  7. defined('APPLICATION_ENV')
  8.     || define('APPLICATION_ENV',
  9.               (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
  10.                                          : 'production'));
  11.  
  12. // Обычно требуется также добавить директорию library/
  13. // в include_path, особенно если она содержит инсталляцию ZF
  14. set_include_path(implode(PATH_SEPARATOR, array(
  15.     dirname(dirname(__FILE__)) . '/library',
  16. )));
  17.  
  18. /** Zend_Application */
  19. require_once 'Zend/Application.php';
  20.  
  21. // Создание объекта приложения, начальная загрузка, запуск
  22. $application = new Zend_Application(
  23.     APPLICATION_ENV,
  24.     APPLICATION_PATH . '/configs/application.ini'
  25. );
  26. $application->bootstrap()
  27.             ->run();

Вы можете заметить, что при установке значения константы режима работы проверяется значение переменной окружения "APPLICATION_ENV". Мы рекомендуем устанавливать ее в своем окружении веб-сервера. В Apache вы можете установить ее либо в своем определении виртуального хоста, либо в своем файле .htaccess. Мы рекомендуем использовать следующее содержимое для вашего файла public/.htaccess:

  1. SetEnv APPLICATION_ENV development
  2.  
  3. RewriteEngine On
  4. RewriteCond %{REQUEST_FILENAME} -s [OR]
  5. RewriteCond %{REQUEST_FILENAME} -l [OR]
  6. RewriteCond %{REQUEST_FILENAME} -d
  7. RewriteRule ^.*$ - [NC,L]
  8. RewriteRule ^.*$ index.php [NC,L]

Note: Узнайте больше о mod_rewrite
Приведенные выше правила перезаписи позволяют получить доступ к любому файлу в корневой для веб-документов директории вашего виртуального хоста. Если в ней есть файлы, которые нужно скрыть от посторонних глаз, то вы наверное захотите установить более строгие правила. Перейдите на сайт Apache, чтобы » узнать больше о mod_rewrite.

Теперь вы готовы начать использование Zend_Application.

Добавление и создание ресурсов

Если вы следовали инструкциям, приведенным выше, то ваш загрузочный класс должен использовать фронт-контроллер, и когда загрузка запускается, то управление будет передаваться фронт-контроллеру.

В этом разделе мы рассмотрим добавление двух ресурсов в ваше приложение. Сначала мы установим макет и затем настроим ваш объект вида.

Одним из стандартных ресурсов, предоставляемых компонентой Zend_Application, является ресурс "layout". Этот ресурс ожидает, что вы определите значения конфигурации, которые затем будут использоваться для конфигурирования вашего экземпляра Zend_Layout.

Все, что нужно сделать для этого, - обновить конфигурационный файл.

  1. [production]
  2. phpSettings.display_startup_errors = 0
  3. phpSettings.display_errors = 0
  4. bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
  5. bootstrap.class = "Bootstrap"
  6. resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
  7. ; ADD THE FOLLOWING LINES
  8. resources.layout.layout = "layout"
  9. resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
  10.  
  11. [staging : production]
  12.  
  13. [testing : production]
  14. phpSettings.display_startup_errors = 1
  15. phpSettings.display_errors = 1
  16.  
  17. [development : production]
  18. phpSettings.display_startup_errors = 1
  19. phpSettings.display_errors = 1

Создайте директорию application/layouts/scripts/ и файл в ней layout.phtml, если это не было сделано ранее. Для начала хорошо подходит следующий макет (он также связан с ресурсом вида, описанным ниже):

  1. <?php echo $this->doctype() ?>
  2. <html>
  3. <head>
  4.     <?php echo $this->headTitle() ?>
  5.     <?php echo $this->headLink() ?>
  6.     <?php echo $this->headStyle() ?>
  7.     <?php echo $this->headScript() ?>
  8. </head>
  9. <body>
  10.     <?php echo $this->layout()->content ?>
  11. </body>
  12. </html>

Теперь вы должны иметь работающий макет.

Далее, мы добавим свой ресурс вида. При инициализации вида мы установим HTML DocType и значение по умолчанию для заголовка, используемого в <head> HTML-документа. Это может быть достигнуто добавлением метода в класс Bootstrap:

  1. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
  2. {
  3.     protected function _initView()
  4.     {
  5.         // Инициализация вида
  6.         $view = new Zend_View();
  7.         $view->doctype('XHTML1_STRICT');
  8.         $view->headTitle('My First Zend Framework Application');
  9.  
  10.         // Добавление вида в ViewRenderer
  11.         $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper(
  12.             'ViewRenderer'
  13.         );
  14.         $viewRenderer->setView($view);
  15.  
  16.         // Его возвращение, таким образом, он может быть сохранен загрузчиком
  17.         return $view;
  18.     }
  19. }

Этот метод будет автоматически выполняться при запуске приложения и он будет обеспечивать инициализацию вашего вида в соответствии с нуждами вашего приложения.

Следующие шаги с Zend_Application

Все написанное выше должно научить вас основам использования Zend_Application и создания загрузки вашего приложения. С этого места вы должны перейти к созданию методов ресурсов, или, для максимального повторного использования, плагинов ресурсов. Читайте дальше, чтобы узнать больше!


Введение