[MANUAL] English:
[zend.git] / documentation / manual / ru / module_specs / Zend_Application-QuickStart.xml
blob347e71c4e82ca7d45642df45321eb59fcc47d4d2
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- Reviewed: no -->
3 <sect1 id="zend.application.quick-start">
4     <title>Zend_Application - Быстрый старт</title>
6     <para>
7         Есть два пути для начала работы с
8         <classname>Zend_Application</classname> и выбор одного из них зависит
9         от того, как вы начинаете свой проект.
10         В обоих случаях вы начинаете с создания класса
11         <classname>Bootstrap</classname> и связанного с ним конфигурационного
12         файла.
13     </para>
15     <para>
16         Если вы планируете использовать <classname>Zend_Tool</classname> для
17         создания своего проекта, то продолжайте читать далее. Если вы добавляете
18         <classname>Zend_Application</classname> на существующий проект,
19         то можете сразу <link linkend="zend.application.quick-start.manual">перейти
20         к следующему разделу</link>.
21     </para>
23     <sect2 id="zend.application.quick-start.zend-tool">
24         <title>Использование вместе с Zend_Tool</title>
26         <para>
27             Наиболее быстрый способ начать использование
28             <classname>Zend_Application</classname> - использовать
29             <classname>Zend_Tool</classname> для генерации вашего проекта.
30             Он также создаст файл с классом <classname>Bootstrap</classname>.
31         </para>
33         <para>
34             Для того, чтобы создать проект, выполните команду
35             <command>zf</command> на системе семейства *nix:
36         </para>
38         <programlisting language="sh"><![CDATA[
39 % zf create project newproject
40 ]]></programlisting>
42         <para>
43             Или команду <filename>zf.bat</filename> на Windows:
44         </para>
46         <programlisting language="dos"><![CDATA[
47 C:> zf.bat create project newproject
48 ]]></programlisting>
50         <para>
51             Обе создадут структуру проекта, которая будет выглядеть
52             следующим образом:
53         </para>
55         <programlisting language="text"><![CDATA[
56 newproject
57 |-- application
58 |   |-- Bootstrap.php
59 |   |-- configs
60 |   |   `-- application.ini
61 |   |-- controllers
62 |   |   |-- ErrorController.php
63 |   |   `-- IndexController.php
64 |   |-- models
65 |   `-- views
66 |       |-- helpers
67 |       `-- scripts
68 |           |-- error
69 |           |   `-- error.phtml
70 |           `-- index
71 |               `-- index.phtml
72 |-- library
73 |-- public
74 |   `-- index.php
75 `-- tests
76     |-- application
77     |   `-- bootstrap.php
78     |-- library
79     |   `-- bootstrap.php
80     `-- phpunit.xml
81 ]]></programlisting>
83         <para>
84             В схеме выше ваш файл загрузки -
85             <filename>newproject/application/Bootstrap.php</filename>, поначалу
86             он будет выглядеть следующим образом:
87         </para>
89         <programlisting language="php"><![CDATA[
90 class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
93 ]]></programlisting>
95         <para>
96             Также обратите внимание, что был создан конфигурационный файл
97             <filename>newproject/application/configs/application.ini</filename>.
98             Его содержимое будет следующим:
99         </para>
101         <programlisting language="dosini"><![CDATA[
102 [production]
103 phpSettings.display_startup_errors = 0
104 phpSettings.display_errors = 0
105 includePaths.library = APPLICATION_PATH "/../library"
106 bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
107 bootstrap.class = "Bootstrap"
108 resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
110 [staging : production]
112 [testing : production]
113 phpSettings.display_startup_errors = 1
114 phpSettings.display_errors = 1
116 [development : production]
117 phpSettings.display_startup_errors = 1
118 phpSettings.display_errors = 1
119 ]]></programlisting>
121         <para>
122             Все установки в конфигурационном файле предназначены для
123             использования с <classname>Zend_Application</classname> и вашим
124             файлом загрузки.
125         </para>
127         <para>
128             Еще один файл, на который стоит обратить внимание -
129             <filename>newproject/public/index.php</filename>, он создает
130             экземпляр <classname>Zend_Application</classname> и запускает
131             приложение.
132         </para>
134         <programlisting language="php"><![CDATA[
135 // Указание пути к директории приложения
136 defined('APPLICATION_PATH')
137     || define('APPLICATION_PATH',
138               realpath(dirname(__FILE__) . '/../application'));
140 // Определение текущего режима работы приложения
141 defined('APPLICATION_ENV')
142     || define('APPLICATION_ENV',
143               (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
144                                          : 'production'));
146 /** Zend_Application */
147 require_once 'Zend/Application.php';
149 // Создание объекта приложения, начальная загрузка, запуск
150 $application = new Zend_Application(
151     APPLICATION_ENV,
152     APPLICATION_PATH . '/configs/application.ini'
154 $application->bootstrap()
155             ->run();
156 ]]></programlisting>
158         <para>
159             Для того, чтобы продолжить "быстрый старт",
160             <link
161             linkend="zend.application.quick-start.resources">перейдите к
162             разделу про ресурсы</link>.
163         </para>
164     </sect2>
166     <sect2 id="zend.application.quick-start.manual">
167         <title>Добавление Zend_Application в приложение</title>
169         <para>
170             Основные положения работы с <classname>Zend_Application</classname>
171             довольно просты:
172         </para>
174         <itemizedlist>
175             <listitem><para>
176                 Создайте файл <filename>application/Bootstrap.php</filename>
177                 с классом <classname>Bootstrap</classname>.
178             </para></listitem>
180             <listitem><para>
181                 Создайте конфигурационный файл
182                 <filename>application/configs/application.ini</filename>
183                 с базовой конфигурацией, необходимой для
184                 <classname>Zend_Application</classname>.
185             </para></listitem>
187             <listitem><para>
188                 Измените свой файл <filename>public/index.php</filename>
189                 с тем, чтобы использовался
190                 <classname>Zend_Application</classname>.
191             </para></listitem>
192         </itemizedlist>
194         <para>
195             Сначала создайте свой загрузочный класс <classname>Bootstrap</classname>.
196             Для этого создайте файл
197             <filename>application/Bootstrap.php</filename> со следующим
198             содержимым:
199         </para>
201         <programlisting language="php"><![CDATA[
202 class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
205 ]]></programlisting>
207         <para>
208             Теперь создайте свою конфигурацию. В примерах мы будем
209             использовать конфигурацию в формате <acronym>INI</acronym>
210             (разумеется, для своего приложения вы можете использовать
211             другой формат - <acronym>XML</acronym> или <acronym>PHP</acronym>).
212             Создайте файл
213             <filename>application/configs/application.ini</filename> и добавьте
214             в него следующее:
215         </para>
217         <programlisting language="dosini"><![CDATA[
218 [production]
219 phpSettings.display_startup_errors = 0
220 phpSettings.display_errors = 0
221 includePaths.library = APPLICATION_PATH "/../library"
222 bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
223 bootstrap.class = "Bootstrap"
224 resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
226 [staging : production]
228 [testing : production]
229 phpSettings.display_startup_errors = 1
230 phpSettings.display_errors = 1
232 [development : production]
233 phpSettings.display_startup_errors = 1
234 phpSettings.display_errors = 1
235 ]]></programlisting>
237         <para>
238             Наконец, приступаем к изменению скрипта
239             <filename>public/index.php</filename>. Если он не существует,
240             то создайте его, иначе замените его содержимое на следующее:
241         </para>
243         <programlisting language="php"><![CDATA[
244 // Указание пути к директории приложения
245 defined('APPLICATION_PATH')
246     || define('APPLICATION_PATH',
247               realpath(dirname(__FILE__) . '/../application'));
249 // Определение текущего режима работы приложения
250 defined('APPLICATION_ENV')
251     || define('APPLICATION_ENV',
252               (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
253                                          : 'production'));
255 // Обычно требуется также добавить директорию library/
256 // в include_path, особенно если она содержит инсталляцию ZF
257 set_include_path(implode(PATH_SEPARATOR, array(
258     dirname(dirname(__FILE__)) . '/library',
259     get_include_path(),
260 )));
262 /** Zend_Application */
263 require_once 'Zend/Application.php';
265 // Создание объекта приложения, начальная загрузка, запуск
266 $application = new Zend_Application(
267     APPLICATION_ENV,
268     APPLICATION_PATH . '/configs/application.ini'
270 $application->bootstrap()
271             ->run();
272 ]]></programlisting>
274         <para>
275             Вы можете заметить, что при установке значения константы режима
276             работы проверяется значение переменной окружения "APPLICATION_ENV".
277             Мы рекомендуем устанавливать ее в своем окружении веб-сервера.
278             В Apache вы можете установить ее либо в своем определении
279             виртуального хоста, либо в своем файле
280             <filename>.htaccess</filename>. Мы рекомендуем использовать
281             следующее содержимое для вашего 
282             файла <filename>public/.htaccess</filename>:
283         </para>
285         <programlisting language="conf"><![CDATA[
286 SetEnv APPLICATION_ENV development
288 RewriteEngine On
289 RewriteCond %{REQUEST_FILENAME} -s [OR]
290 RewriteCond %{REQUEST_FILENAME} -l [OR]
291 RewriteCond %{REQUEST_FILENAME} -d
292 RewriteRule ^.*$ - [NC,L]
293 RewriteRule ^.*$ index.php [NC,L]
294 ]]></programlisting>
296         <note>
297             <title>Узнайте больше о mod_rewrite</title>
299             <para>
300                 Приведенные выше правила перезаписи позволяют получить
301                 доступ к любому файлу в корневой для веб-документов
302                 директории вашего виртуального хоста. Если
303                 в ней есть файлы, которые нужно скрыть от посторонних глаз,
304                 то вы наверное захотите установить более строгие правила.
305                 Перейдите на сайт Apache, чтобы
306                 <ulink
307                     url="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html">узнать больше о mod_rewrite</ulink>.
308             </para>
309         </note>
311         <para>
312             Теперь вы готовы начать использование
313             <classname>Zend_Application</classname>.
314         </para>
315     </sect2>
317     <sect2 id="zend.application.quick-start.resources">
318         <title>Добавление и создание ресурсов</title>
320         <para>
321             Если вы следовали инструкциям, приведенным выше, то ваш
322             загрузочный класс должен использовать фронт-контроллер,
323             и когда загрузка запускается, то управление будет передаваться
324             фронт-контроллеру.
325         </para>
327         <para>
328             В этом разделе мы рассмотрим добавление двух ресурсов
329             в ваше приложение. Сначала мы установим макет и затем
330             настроим ваш объект вида.
331         </para>
333         <para>
334             Одним из стандартных ресурсов, предоставляемых компонентой
335             <classname>Zend_Application</classname>, является ресурс "layout".
336             Этот ресурс ожидает, что вы определите значения конфигурации,
337             которые затем будут использоваться для конфигурирования
338             вашего экземпляра <classname>Zend_Layout</classname>.
339         </para>
341         <para>
342             Все, что нужно сделать для этого, - обновить конфигурационный
343             файл.
344         </para>
346         <programlisting language="dosini"><![CDATA[
347 [production]
348 phpSettings.display_startup_errors = 0
349 phpSettings.display_errors = 0
350 bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
351 bootstrap.class = "Bootstrap"
352 resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
353 ; ADD THE FOLLOWING LINES
354 resources.layout.layout = "layout"
355 resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
357 [staging : production]
359 [testing : production]
360 phpSettings.display_startup_errors = 1
361 phpSettings.display_errors = 1
363 [development : production]
364 phpSettings.display_startup_errors = 1
365 phpSettings.display_errors = 1
366 ]]></programlisting>
368         <para>
369             Создайте директорию
370             <filename>application/layouts/scripts/</filename> и файл в ней
371             <filename>layout.phtml</filename>, если это не было сделано ранее.
372             Для начала хорошо подходит следующий макет (он также связан
373             с ресурсом вида, описанным ниже):
374         </para>
376         <programlisting language="php"><![CDATA[
377 <?php echo $this->doctype() ?>
378 <html>
379 <head>
380     <?php echo $this->headTitle() ?>
381     <?php echo $this->headLink() ?>
382     <?php echo $this->headStyle() ?>
383     <?php echo $this->headScript() ?>
384 </head>
385 <body>
386     <?php echo $this->layout()->content ?>
387 </body>
388 </html>
389 ]]></programlisting>
391         <para>
392             Теперь вы должны иметь работающий макет.
393         </para>
395         <para>
396             Далее, мы добавим свой ресурс вида. При инициализации вида
397             мы установим <acronym>HTML</acronym> DocType и значение по
398             умолчанию для заголовка, используемого в
399             &lt;head&gt; <acronym>HTML</acronym>-документа.
400             Это может быть достигнуто добавлением метода в класс
401             <classname>Bootstrap</classname>:
402         </para>
404         <programlisting language="php"><![CDATA[
405 class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
407     protected function _initView()
408     {
409         // Инициализация вида
410         $view = new Zend_View();
411         $view->doctype('XHTML1_STRICT');
412         $view->headTitle('My First Zend Framework Application');
414         // Добавление вида в ViewRenderer
415         $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper(
416             'ViewRenderer'
417         );
418         $viewRenderer->setView($view);
420         // Его возвращение, таким образом, он может быть сохранен загрузчиком
421         return $view;
422     }
424 ]]></programlisting>
426         <para>
427             Этот метод будет автоматически выполняться при запуске
428             приложения и он будет обеспечивать инициализацию вашего вида в
429             соответствии с нуждами вашего приложения.
430         </para>
431     </sect2>
433     <sect2 id="zend.application.quick-start.next-steps">
434         <title>Следующие шаги с Zend_Application</title>
436         <para>
437             Все написанное выше должно научить вас основам использования
438             <classname>Zend_Application</classname> и создания загрузки вашего
439             приложения. С этого места вы должны перейти к созданию методов
440             ресурсов, или, для максимального повторного использования,
441             плагинов ресурсов.
442             Читайте дальше, чтобы узнать больше!
443         </para>
444     </sect2>
445 </sect1>