| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445 |
- <?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>
- Теперь создайте свою конфигурацию. В примерах мы будем
- использовать конфигурацию в формате <acronym>INI</acronym>
- (разумеется, для своего приложения вы можете использовать
- другой формат - <acronym>XML</acronym> или <acronym>PHP</acronym>).
- Создайте файл
- <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/.htaccess</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>
- Далее, мы добавим свой ресурс вида. При инициализации вида
- мы установим <acronym>HTML</acronym> DocType и значение по
- умолчанию для заголовка, используемого в
- <head> <acronym>HTML</acronym>-документа.
- Это может быть достигнуто добавлением метода в класс
- <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>
|