1 <?xml version="1.0" encoding="UTF-8"?>
3 <sect1 id="zend.application.quick-start">
4 <title>Zend_Application - Быстрый старт</title>
7 Есть два пути для начала работы с
8 <classname>Zend_Application</classname> и выбор одного из них зависит
9 от того, как вы начинаете свой проект.
10 В обоих случаях вы начинаете с создания класса
11 <classname>Bootstrap</classname> и связанного с ним конфигурационного
16 Если вы планируете использовать <classname>Zend_Tool</classname> для
17 создания своего проекта, то продолжайте читать далее. Если вы добавляете
18 <classname>Zend_Application</classname> на существующий проект,
19 то можете сразу <link linkend="zend.application.quick-start.manual">перейти
20 к следующему разделу</link>.
23 <sect2 id="zend.application.quick-start.zend-tool">
24 <title>Использование вместе с Zend_Tool</title>
27 Наиболее быстрый способ начать использование
28 <classname>Zend_Application</classname> - использовать
29 <classname>Zend_Tool</classname> для генерации вашего проекта.
30 Он также создаст файл с классом <classname>Bootstrap</classname>.
34 Для того, чтобы создать проект, выполните команду
35 <command>zf</command> на системе семейства *nix:
38 <programlisting language="sh"><![CDATA[
39 % zf create project newproject
43 Или команду <filename>zf.bat</filename> на Windows:
46 <programlisting language="dos"><![CDATA[
47 C:> zf.bat create project newproject
51 Обе создадут структуру проекта, которая будет выглядеть
55 <programlisting language="text"><![CDATA[
60 | | `-- application.ini
62 | | |-- ErrorController.php
63 | | `-- IndexController.php
84 В схеме выше ваш файл загрузки -
85 <filename>newproject/application/Bootstrap.php</filename>, поначалу
86 он будет выглядеть следующим образом:
89 <programlisting language="php"><![CDATA[
90 class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
96 Также обратите внимание, что был создан конфигурационный файл
97 <filename>newproject/application/configs/application.ini</filename>.
98 Его содержимое будет следующим:
101 <programlisting language="dosini"><![CDATA[
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
122 Все установки в конфигурационном файле предназначены для
123 использования с <classname>Zend_Application</classname> и вашим
128 Еще один файл, на который стоит обратить внимание -
129 <filename>newproject/public/index.php</filename>, он создает
130 экземпляр <classname>Zend_Application</classname> и запускает
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')
146 /** Zend_Application */
147 require_once 'Zend/Application.php';
149 // Создание объекта приложения, начальная загрузка, запуск
150 $application = new Zend_Application(
152 APPLICATION_PATH . '/configs/application.ini'
154 $application->bootstrap()
159 Для того, чтобы продолжить "быстрый старт",
161 linkend="zend.application.quick-start.resources">перейдите к
162 разделу про ресурсы</link>.
166 <sect2 id="zend.application.quick-start.manual">
167 <title>Добавление Zend_Application в приложение</title>
170 Основные положения работы с <classname>Zend_Application</classname>
176 Создайте файл <filename>application/Bootstrap.php</filename>
177 с классом <classname>Bootstrap</classname>.
181 Создайте конфигурационный файл
182 <filename>application/configs/application.ini</filename>
183 с базовой конфигурацией, необходимой для
184 <classname>Zend_Application</classname>.
188 Измените свой файл <filename>public/index.php</filename>
189 с тем, чтобы использовался
190 <classname>Zend_Application</classname>.
195 Сначала создайте свой загрузочный класс <classname>Bootstrap</classname>.
196 Для этого создайте файл
197 <filename>application/Bootstrap.php</filename> со следующим
201 <programlisting language="php"><![CDATA[
202 class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
208 Теперь создайте свою конфигурацию. В примерах мы будем
209 использовать конфигурацию в формате <acronym>INI</acronym>
210 (разумеется, для своего приложения вы можете использовать
211 другой формат - <acronym>XML</acronym> или <acronym>PHP</acronym>).
213 <filename>application/configs/application.ini</filename> и добавьте
217 <programlisting language="dosini"><![CDATA[
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
238 Наконец, приступаем к изменению скрипта
239 <filename>public/index.php</filename>. Если он не существует,
240 то создайте его, иначе замените его содержимое на следующее:
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')
255 // Обычно требуется также добавить директорию library/
256 // в include_path, особенно если она содержит инсталляцию ZF
257 set_include_path(implode(PATH_SEPARATOR, array(
258 dirname(dirname(__FILE__)) . '/library',
262 /** Zend_Application */
263 require_once 'Zend/Application.php';
265 // Создание объекта приложения, начальная загрузка, запуск
266 $application = new Zend_Application(
268 APPLICATION_PATH . '/configs/application.ini'
270 $application->bootstrap()
275 Вы можете заметить, что при установке значения константы режима
276 работы проверяется значение переменной окружения "APPLICATION_ENV".
277 Мы рекомендуем устанавливать ее в своем окружении веб-сервера.
278 В Apache вы можете установить ее либо в своем определении
279 виртуального хоста, либо в своем файле
280 <filename>.htaccess</filename>. Мы рекомендуем использовать
281 следующее содержимое для вашего
282 файла <filename>public/.htaccess</filename>:
285 <programlisting language="conf"><![CDATA[
286 SetEnv APPLICATION_ENV development
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]
297 <title>Узнайте больше о mod_rewrite</title>
300 Приведенные выше правила перезаписи позволяют получить
301 доступ к любому файлу в корневой для веб-документов
302 директории вашего виртуального хоста. Если
303 в ней есть файлы, которые нужно скрыть от посторонних глаз,
304 то вы наверное захотите установить более строгие правила.
305 Перейдите на сайт Apache, чтобы
307 url="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html">узнать больше о mod_rewrite</ulink>.
312 Теперь вы готовы начать использование
313 <classname>Zend_Application</classname>.
317 <sect2 id="zend.application.quick-start.resources">
318 <title>Добавление и создание ресурсов</title>
321 Если вы следовали инструкциям, приведенным выше, то ваш
322 загрузочный класс должен использовать фронт-контроллер,
323 и когда загрузка запускается, то управление будет передаваться
328 В этом разделе мы рассмотрим добавление двух ресурсов
329 в ваше приложение. Сначала мы установим макет и затем
330 настроим ваш объект вида.
334 Одним из стандартных ресурсов, предоставляемых компонентой
335 <classname>Zend_Application</classname>, является ресурс "layout".
336 Этот ресурс ожидает, что вы определите значения конфигурации,
337 которые затем будут использоваться для конфигурирования
338 вашего экземпляра <classname>Zend_Layout</classname>.
342 Все, что нужно сделать для этого, - обновить конфигурационный
346 <programlisting language="dosini"><![CDATA[
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
370 <filename>application/layouts/scripts/</filename> и файл в ней
371 <filename>layout.phtml</filename>, если это не было сделано ранее.
372 Для начала хорошо подходит следующий макет (он также связан
373 с ресурсом вида, описанным ниже):
376 <programlisting language="php"><![CDATA[
377 <?php echo $this->doctype() ?>
380 <?php echo $this->headTitle() ?>
381 <?php echo $this->headLink() ?>
382 <?php echo $this->headStyle() ?>
383 <?php echo $this->headScript() ?>
386 <?php echo $this->layout()->content ?>
392 Теперь вы должны иметь работающий макет.
396 Далее, мы добавим свой ресурс вида. При инициализации вида
397 мы установим <acronym>HTML</acronym> DocType и значение по
398 умолчанию для заголовка, используемого в
399 <head> <acronym>HTML</acronym>-документа.
400 Это может быть достигнуто добавлением метода в класс
401 <classname>Bootstrap</classname>:
404 <programlisting language="php"><![CDATA[
405 class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
407 protected function _initView()
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(
418 $viewRenderer->setView($view);
420 // Его возвращение, таким образом, он может быть сохранен загрузчиком
427 Этот метод будет автоматически выполняться при запуске
428 приложения и он будет обеспечивать инициализацию вашего вида в
429 соответствии с нуждами вашего приложения.
433 <sect2 id="zend.application.quick-start.next-steps">
434 <title>Следующие шаги с Zend_Application</title>
437 Все написанное выше должно научить вас основам использования
438 <classname>Zend_Application</classname> и создания загрузки вашего
439 приложения. С этого места вы должны перейти к созданию методов
440 ресурсов, или, для максимального повторного использования,
442 Читайте дальше, чтобы узнать больше!