|
|
@@ -0,0 +1,443 @@
|
|
|
+<?xml version="1.0" encoding="UTF-8"?>
|
|
|
+<!-- Reviewed: no -->
|
|
|
+<sect1 id="zend.application.quick-start">
|
|
|
+ <title>Zend_Application - Быстрый старт</title>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Есть два пути для начала работы с
|
|
|
+ <classname>Zend_Application</classname> и выбор одного из них зависит
|
|
|
+ от того, как вы начинаете свой проект.
|
|
|
+ В обоих случаях вы начинаете с создания класса
|
|
|
+ <classname>Bootstrap</classname> и связанного с ним конфигурационного
|
|
|
+ файла.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Если вы планируете использовать <classname>Zend_Tool</classname> для
|
|
|
+ создания своего проекта, то продолжайте читать далее. Если вы добавляете
|
|
|
+ <classname>Zend_Application</classname> на существующий проект,
|
|
|
+ то можете сразу <link linkend="zend.application.quick-start.manual">перейти
|
|
|
+ к следующему разделу</link>.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <sect2 id="zend.application.quick-start.zend-tool">
|
|
|
+ <title>Использование вместе с Zend_Tool</title>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Наиболее быстрый способ начать использование
|
|
|
+ <classname>Zend_Application</classname> - использовать
|
|
|
+ <classname>Zend_Tool</classname> для генерации вашего проекта.
|
|
|
+ Он также создаст файл с классом <classname>Bootstrap</classname>.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Для того, чтобы создать проект, выполните команду
|
|
|
+ <command>zf</command> на системе семейства *nix:
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="sh"><![CDATA[
|
|
|
+% zf create project newproject
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Или команду <filename>zf.bat</filename> на Windows:
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="dos"><![CDATA[
|
|
|
+C:> zf.bat create project newproject
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Обе создадут структуру проекта, которая будет выглядеть
|
|
|
+ следующим образом:
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="text"><![CDATA[
|
|
|
+newproject
|
|
|
+|-- application
|
|
|
+| |-- Bootstrap.php
|
|
|
+| |-- configs
|
|
|
+| | `-- application.ini
|
|
|
+| |-- controllers
|
|
|
+| | |-- ErrorController.php
|
|
|
+| | `-- IndexController.php
|
|
|
+| |-- models
|
|
|
+| `-- views
|
|
|
+| |-- helpers
|
|
|
+| `-- scripts
|
|
|
+| |-- error
|
|
|
+| | `-- error.phtml
|
|
|
+| `-- index
|
|
|
+| `-- index.phtml
|
|
|
+|-- library
|
|
|
+|-- public
|
|
|
+| `-- index.php
|
|
|
+`-- tests
|
|
|
+ |-- application
|
|
|
+ | `-- bootstrap.php
|
|
|
+ |-- library
|
|
|
+ | `-- bootstrap.php
|
|
|
+ `-- phpunit.xml
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ В схеме выше ваш файл загрузки -
|
|
|
+ <filename>newproject/application/Bootstrap.php</filename>, поначалу
|
|
|
+ он будет выглядеть следующим образом:
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
+class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
|
|
|
+{
|
|
|
+}
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Также обратите внимание, что был создан конфигурационный файл
|
|
|
+ <filename>newproject/application/configs/application.ini</filename>.
|
|
|
+ Его содержимое будет следующим:
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="dosini"><![CDATA[
|
|
|
+[production]
|
|
|
+phpSettings.display_startup_errors = 0
|
|
|
+phpSettings.display_errors = 0
|
|
|
+includePaths.library = APPLICATION_PATH "/../library"
|
|
|
+bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
|
|
|
+bootstrap.class = "Bootstrap"
|
|
|
+resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
|
|
|
+
|
|
|
+[staging : production]
|
|
|
+
|
|
|
+[testing : production]
|
|
|
+phpSettings.display_startup_errors = 1
|
|
|
+phpSettings.display_errors = 1
|
|
|
+
|
|
|
+[development : production]
|
|
|
+phpSettings.display_startup_errors = 1
|
|
|
+phpSettings.display_errors = 1
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Все установки в конфигурационном файле предназначены для
|
|
|
+ использования с <classname>Zend_Application</classname> и вашим
|
|
|
+ файлом загрузки.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Еще один файл, на который стоит обратить внимание -
|
|
|
+ <filename>newproject/public/index.php</filename>, он создает
|
|
|
+ экземпляр <classname>Zend_Application</classname> и запускает
|
|
|
+ приложение.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
+// Указание пути к директории приложения
|
|
|
+defined('APPLICATION_PATH')
|
|
|
+ || define('APPLICATION_PATH',
|
|
|
+ realpath(dirname(__FILE__) . '/../application'));
|
|
|
+
|
|
|
+// Определение текущего режима работы приложения
|
|
|
+defined('APPLICATION_ENV')
|
|
|
+ || define('APPLICATION_ENV',
|
|
|
+ (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
|
|
|
+ : 'production'));
|
|
|
+
|
|
|
+/** Zend_Application */
|
|
|
+require_once 'Zend/Application.php';
|
|
|
+
|
|
|
+// Создание объекта приложения, начальная загрузка, запуск
|
|
|
+$application = new Zend_Application(
|
|
|
+ APPLICATION_ENV,
|
|
|
+ APPLICATION_PATH . '/configs/application.ini'
|
|
|
+);
|
|
|
+$application->bootstrap()
|
|
|
+ ->run();
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Для того, чтобы продолжить "быстрый старт",
|
|
|
+ <link
|
|
|
+ linkend="zend.application.quick-start.resources">перейдите к
|
|
|
+ разделу про ресурсы</link>.
|
|
|
+ </para>
|
|
|
+ </sect2>
|
|
|
+
|
|
|
+ <sect2 id="zend.application.quick-start.manual">
|
|
|
+ <title>Добавление Zend_Application в приложение</title>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Основные положения работы с <classname>Zend_Application</classname>
|
|
|
+ довольно просты:
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <itemizedlist>
|
|
|
+ <listitem><para>
|
|
|
+ Создайте файл <filename>application/Bootstrap.php</filename>
|
|
|
+ с классом <classname>Bootstrap</classname>.
|
|
|
+ </para></listitem>
|
|
|
+
|
|
|
+ <listitem><para>
|
|
|
+ Создайте конфигурационный файл
|
|
|
+ <filename>application/configs/application.ini</filename>
|
|
|
+ с базовой конфигурацией, необходимой для
|
|
|
+ <classname>Zend_Application</classname>.
|
|
|
+ </para></listitem>
|
|
|
+
|
|
|
+ <listitem><para>
|
|
|
+ Измените свой файл <filename>public/index.php</filename>
|
|
|
+ с тем, чтобы использовался
|
|
|
+ <classname>Zend_Application</classname>.
|
|
|
+ </para></listitem>
|
|
|
+ </itemizedlist>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Сначала создайте свой класс загрузки <classname>Bootstrap</classname>.
|
|
|
+ Для этого создайте файл
|
|
|
+ <filename>application/Bootstrap.php</filename> со следующим
|
|
|
+ содержимым:
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
+class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
|
|
|
+{
|
|
|
+}
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Теперь создайте свою конфигурацию. В примерах мы будем
|
|
|
+ использовать конфигурацию в формате INI (разумеется, для своего
|
|
|
+ приложения вы можете использовать другой формат - XML или PHP).
|
|
|
+ Создайте файл
|
|
|
+ <filename>application/configs/application.ini</filename> и добавьте
|
|
|
+ в него следующее:
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="dosini"><![CDATA[
|
|
|
+[production]
|
|
|
+phpSettings.display_startup_errors = 0
|
|
|
+phpSettings.display_errors = 0
|
|
|
+includePaths.library = APPLICATION_PATH "/../library"
|
|
|
+bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
|
|
|
+bootstrap.class = "Bootstrap"
|
|
|
+resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
|
|
|
+
|
|
|
+[staging : production]
|
|
|
+
|
|
|
+[testing : production]
|
|
|
+phpSettings.display_startup_errors = 1
|
|
|
+phpSettings.display_errors = 1
|
|
|
+
|
|
|
+[development : production]
|
|
|
+phpSettings.display_startup_errors = 1
|
|
|
+phpSettings.display_errors = 1
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Наконец, приступаем к изменению скрипта
|
|
|
+ <filename>public/index.php</filename>. Если он не существует,
|
|
|
+ то создайте его, иначе замените его содержимое на следующее:
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
+// Указание пути к директории приложения
|
|
|
+defined('APPLICATION_PATH')
|
|
|
+ || define('APPLICATION_PATH',
|
|
|
+ realpath(dirname(__FILE__) . '/../application'));
|
|
|
+
|
|
|
+// Определение текущего режима работы приложения
|
|
|
+defined('APPLICATION_ENV')
|
|
|
+ || define('APPLICATION_ENV',
|
|
|
+ (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
|
|
|
+ : 'production'));
|
|
|
+
|
|
|
+// Обычно требуется также добавить директорию library/
|
|
|
+// в include_path, особенно если она содержит инсталляцию ZF
|
|
|
+set_include_path(implode(PATH_SEPARATOR, array(
|
|
|
+ dirname(dirname(__FILE__)) . '/library',
|
|
|
+ get_include_path(),
|
|
|
+)));
|
|
|
+
|
|
|
+/** Zend_Application */
|
|
|
+require_once 'Zend/Application.php';
|
|
|
+
|
|
|
+// Создание объекта приложения, начальная загрузка, запуск
|
|
|
+$application = new Zend_Application(
|
|
|
+ APPLICATION_ENV,
|
|
|
+ APPLICATION_PATH . '/configs/application.ini'
|
|
|
+);
|
|
|
+$application->bootstrap()
|
|
|
+ ->run();
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Вы можете заметить, что при установке значения константы режима
|
|
|
+ работы проверяется значение переменной окружения "APPLICATION_ENV".
|
|
|
+ Мы рекомендуем устанавливать ее в своем окружении веб-сервера.
|
|
|
+ В Apache вы можете установить ее либо в своем определении
|
|
|
+ виртуального хоста, либо в своем файле
|
|
|
+ <filename>.htaccess</filename>. Мы рекомендуем использовать
|
|
|
+ следующее содержимое для вашего
|
|
|
+ файла <filename>public/.htacces</filename>:
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="conf"><![CDATA[
|
|
|
+SetEnv APPLICATION_ENV development
|
|
|
+
|
|
|
+RewriteEngine On
|
|
|
+RewriteCond %{REQUEST_FILENAME} -s [OR]
|
|
|
+RewriteCond %{REQUEST_FILENAME} -l [OR]
|
|
|
+RewriteCond %{REQUEST_FILENAME} -d
|
|
|
+RewriteRule ^.*$ - [NC,L]
|
|
|
+RewriteRule ^.*$ index.php [NC,L]
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
+ <note>
|
|
|
+ <title>Узнайте больше о mod_rewrite</title>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Приведенные выше правила перезаписи позволяют получить
|
|
|
+ доступ к любому файлу в корневой для веб-документов
|
|
|
+ директории вашего виртуального хоста. Если
|
|
|
+ в ней есть файлы, которые нужно скрыть от посторонних глаз,
|
|
|
+ то вы наверное захотите установить более строгие правила.
|
|
|
+ Перейдите на сайт Apache, чтобы
|
|
|
+ <ulink
|
|
|
+ url="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html">узнать больше о mod_rewrite</ulink>.
|
|
|
+ </para>
|
|
|
+ </note>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Теперь вы готовы начать использование
|
|
|
+ <classname>Zend_Application</classname>.
|
|
|
+ </para>
|
|
|
+ </sect2>
|
|
|
+
|
|
|
+ <sect2 id="zend.application.quick-start.resources">
|
|
|
+ <title>Добавление и создание ресурсов</title>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Если вы следовали инструкциям, приведенным выше, то ваш
|
|
|
+ класс загрузки должен использовать фронт-контроллер,
|
|
|
+ и когда загрузка запускается, управление будет передаваться
|
|
|
+ фронт-контроллеру.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ В этом разделе мы рассмотрим добавление двух ресурсов
|
|
|
+ в ваше приложение. Сначала мы установим макет и затем
|
|
|
+ настроим ваш объект вида.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Одним из стандартных ресурсов, предоставляемых компонентой
|
|
|
+ <classname>Zend_Application</classname>, является ресурс "layout".
|
|
|
+ Этот ресурс ожидает, что вы определите значения конфигурации,
|
|
|
+ которые затем будут использоваться для конфигурирования
|
|
|
+ вашего экземпляра <classname>Zend_Layout</classname>.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Все, что нужно сделать для этого, - обновить конфигурационный
|
|
|
+ файл.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="dosini"><![CDATA[
|
|
|
+[production]
|
|
|
+phpSettings.display_startup_errors = 0
|
|
|
+phpSettings.display_errors = 0
|
|
|
+bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
|
|
|
+bootstrap.class = "Bootstrap"
|
|
|
+resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
|
|
|
+; ADD THE FOLLOWING LINES
|
|
|
+resources.layout.layout = "layout"
|
|
|
+resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
|
|
|
+
|
|
|
+[staging : production]
|
|
|
+
|
|
|
+[testing : production]
|
|
|
+phpSettings.display_startup_errors = 1
|
|
|
+phpSettings.display_errors = 1
|
|
|
+
|
|
|
+[development : production]
|
|
|
+phpSettings.display_startup_errors = 1
|
|
|
+phpSettings.display_errors = 1
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Создайте директорию
|
|
|
+ <filename>application/layouts/scripts/</filename> и файл в ней
|
|
|
+ <filename>layout.phtml</filename>, если это не было сделано ранее.
|
|
|
+ Для начала хорошо подходит следующий макет (он также связан
|
|
|
+ с ресурсом вида, описанным ниже):
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
+<?php echo $this->doctype() ?>
|
|
|
+<html>
|
|
|
+<head>
|
|
|
+ <?php echo $this->headTitle() ?>
|
|
|
+ <?php echo $this->headLink() ?>
|
|
|
+ <?php echo $this->headStyle() ?>
|
|
|
+ <?php echo $this->headScript() ?>
|
|
|
+</head>
|
|
|
+<body>
|
|
|
+ <?php echo $this->layout()->content ?>
|
|
|
+</body>
|
|
|
+</html>
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Теперь вы должны иметь работающий макет.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Далее, мы добавим свой ресурс вида. При инициализации вида
|
|
|
+ мы установим HTML DocType и значение по умолчанию для заголовка,
|
|
|
+ используемого в <head> HTML-документа.
|
|
|
+ Это может быть достигнуто добавлением метода в класс
|
|
|
+ <classname>Bootstrap</classname>:
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
+class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
|
|
|
+{
|
|
|
+ protected function _initView()
|
|
|
+ {
|
|
|
+ // Инициализация вида
|
|
|
+ $view = new Zend_View();
|
|
|
+ $view->doctype('XHTML1_STRICT');
|
|
|
+ $view->headTitle('My First Zend Framework Application');
|
|
|
+
|
|
|
+ // Добавление вида в ViewRenderer
|
|
|
+ $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper(
|
|
|
+ 'ViewRenderer'
|
|
|
+ );
|
|
|
+ $viewRenderer->setView($view);
|
|
|
+
|
|
|
+ // Его возвращение, таким образом, он может быть сохранен загрузчиком
|
|
|
+ return $view;
|
|
|
+ }
|
|
|
+}
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Этот метод будет автоматически выполняться при запуске
|
|
|
+ приложения и он будет обеспечивать инициализацию вашего вида в
|
|
|
+ соответствии с нуждами вашего приложения.
|
|
|
+ </para>
|
|
|
+ </sect2>
|
|
|
+
|
|
|
+ <sect2 id="zend.application.quick-start.next-steps">
|
|
|
+ <title>Следующие шаги с Zend_Application</title>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Все написанное выше должно научить вас основам использования
|
|
|
+ <classname>Zend_Application</classname> и создания загрузки вашего
|
|
|
+ приложения. С этого места вы должны перейти к созданию методов
|
|
|
+ ресурсов, или, для максимального повторного использования,
|
|
|
+ плагинов ресурсов.
|
|
|
+ Читайте дальше, чтобы узнать больше!
|
|
|
+ </para>
|
|
|
+ </sect2>
|
|
|
+</sect1>
|