Zend_Application-QuickStart.xml 18 KB

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