Zend_Application-QuickStart.xml 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 17372 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.application.quick-start">
  5. <title>Gyorstalpaló</title>
  6. <para>
  7. Két útja van a <classname>Zend_Application</classname> használatba
  8. vételének, attól függően, hogyan kezdjük projektünket. Mindkét esetben
  9. egy <classname>Bootstrap</classname> osztály és egy vonatkozó
  10. konfigurációs állomány létrehozása az első.
  11. </para>
  12. <para>
  13. A folytatásban egy projekt <classname>Zend_Tool</classname>-lal való
  14. létrehozása, ezt
  15. <link linkend="zend.application.quick-start.manual">átugorva</link>
  16. pedig a <classname>Zend_Application</classname> egy létező projekthez
  17. való hozzáadása olvasható.
  18. </para>
  19. <sect2 id="zend.application.quick-start.zend-tool">
  20. <title>A Zend_Tool használata</title>
  21. <para>
  22. A <classname>Zend_Application</classname> használatba vételének
  23. leggyorsabb módja a <classname>Zend_Tool</classname> munkába
  24. állítása a projekt képzéshez. Ez egyúttal létrehozza a
  25. <classname>Bootstrap</classname> osztályt és állományt.
  26. </para>
  27. <para>
  28. Projekt generálásához végre kell hajtani a <command>zf</command>
  29. parancsot (*nix rendszereken):
  30. </para>
  31. <programlisting language="sh"><![CDATA[
  32. % zf create project newproject
  33. ]]></programlisting>
  34. <para>
  35. Vagy a Windows <filename>zf.bat</filename> parancsát:
  36. </para>
  37. <programlisting language="dos"><![CDATA[
  38. C:> zf.bat create project newproject
  39. ]]></programlisting>
  40. <para>
  41. Mindkettő a következőképp festő projekt szerkezetet alakítja ki:
  42. </para>
  43. <programlisting language="text"><![CDATA[
  44. newproject
  45. |-- application
  46. | |-- Bootstrap.php
  47. | |-- configs
  48. | | `-- application.ini
  49. | |-- controllers
  50. | | |-- ErrorController.php
  51. | | `-- IndexController.php
  52. | |-- models
  53. | `-- views
  54. | |-- helpers
  55. | `-- scripts
  56. | |-- error
  57. | | `-- error.phtml
  58. | `-- index
  59. | `-- index.phtml
  60. |-- library
  61. |-- public
  62. | `-- index.php
  63. `-- tests
  64. |-- application
  65. | `-- bootstrap.php
  66. |-- library
  67. | `-- bootstrap.php
  68. `-- phpunit.xml
  69. ]]></programlisting>
  70. <para>
  71. A fenti ábrán a rendszertöltő a
  72. <filename>newproject/application/Bootstrap.php</filename>
  73. állományban található, és elsőre a következőképp néz ki:
  74. </para>
  75. <programlisting language="php"><![CDATA[
  76. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
  77. {
  78. }
  79. ]]></programlisting>
  80. <para>
  81. Ezen kívül egy konfigurációs állomány is létrejött
  82. <filename>newproject/application/configs/application.ini</filename>
  83. néven, az alábbiakkal:
  84. </para>
  85. <programlisting language="dosini"><![CDATA[
  86. [production]
  87. phpSettings.display_startup_errors = 0
  88. phpSettings.display_errors = 0
  89. includePaths.library = APPLICATION_PATH "/../library"
  90. bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
  91. bootstrap.class = "Bootstrap"
  92. resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
  93. [staging : production]
  94. [testing : production]
  95. phpSettings.display_startup_errors = 1
  96. phpSettings.display_errors = 1
  97. [development : production]
  98. phpSettings.display_startup_errors = 1
  99. phpSettings.display_errors = 1
  100. ]]></programlisting>
  101. <para>
  102. Az összes ebben található beállítás a
  103. <classname>Zend_Application</classname>-nel és a rendszertöltővel
  104. történő használat célját szolgálja.
  105. </para>
  106. <para>
  107. Egy másik érdeklődésre számot tartó állomány a
  108. <filename>newproject/public/index.php</filename>, mely meghívja és
  109. elindítja a <classname>Zend_Application</classname>-t.
  110. </para>
  111. <programlisting language="php"><![CDATA[
  112. // Define path to application directory
  113. defined('APPLICATION_PATH')
  114. || define('APPLICATION_PATH',
  115. realpath(dirname(__FILE__) . '/../application'));
  116. // Define application environment
  117. defined('APPLICATION_ENV')
  118. || define('APPLICATION_ENV',
  119. (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
  120. : 'production'));
  121. /** Zend_Application */
  122. require_once 'Zend/Application.php';
  123. // Create application, bootstrap, and run
  124. $application = new Zend_Application(
  125. APPLICATION_ENV,
  126. APPLICATION_PATH . '/configs/application.ini'
  127. );
  128. $application->bootstrap()
  129. ->run();
  130. ]]></programlisting>
  131. <para>
  132. Folytatás az
  133. <link linkend="zend.application.quick-start.resources">erősforrásokról</link>
  134. szóló résznél.
  135. </para>
  136. </sect2>
  137. <sect2 id="zend.application.quick-start.manual">
  138. <title>Hozzáadás az alkalmazáshoz</title>
  139. <para>
  140. A <classname>Zend_Application</classname> alapjai meglehetősen
  141. egyszerűek:
  142. </para>
  143. <itemizedlist>
  144. <listitem><para>
  145. Az <filename>application/Bootstrap.php</filename> állomány
  146. létrehozása benne a <classname>Bootstrap</classname> osztállyal.
  147. </para></listitem>
  148. <listitem><para>
  149. Az <filename>application/configs/application.ini</filename>
  150. konfigurációs állomány elkészítése az alapvető beállításokkal.
  151. </para></listitem>
  152. <listitem><para>
  153. A <filename>public/index.php</filename> átalakítása.
  154. </para></listitem>
  155. </itemizedlist>
  156. <para>
  157. Elsőként létre kell hozni a <classname>Bootstrap</classname>
  158. osztályt az <filename>application/Bootstrap.php</filename>-ban, a
  159. következőkkel:
  160. </para>
  161. <programlisting language="php"><![CDATA[
  162. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
  163. {
  164. }
  165. ]]></programlisting>
  166. <para>
  167. Ha ez megvan, el kell készíteni a konfigurációs állományt. Ezen
  168. oktatóanyag keretében egy <acronym>INI</acronym> stílusú beállítást
  169. használunk; ugyanígy használható persze <acronym>XML</acronym> vagy
  170. <acronym>PHP</acronym> is. Az
  171. <filename>application/configs/application.ini</filename> tartalma:
  172. </para>
  173. <programlisting language="dosini"><![CDATA[
  174. [production]
  175. phpSettings.display_startup_errors = 0
  176. phpSettings.display_errors = 0
  177. includePaths.library = APPLICATION_PATH "/../library"
  178. bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
  179. bootstrap.class = "Bootstrap"
  180. resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
  181. [staging : production]
  182. [testing : production]
  183. phpSettings.display_startup_errors = 1
  184. phpSettings.display_errors = 1
  185. [development : production]
  186. phpSettings.display_startup_errors = 1
  187. phpSettings.display_errors = 1
  188. ]]></programlisting>
  189. <para>
  190. Most pedig alakítsuk át <filename>public/index.php</filename>
  191. kapu-szkriptünk. Ha az állomány nem létezik, hozzuk létre, ha igen,
  192. cseréljük le a tartalmát:
  193. </para>
  194. <programlisting language="php"><![CDATA[
  195. // Elérési út az alkalmazás könyvtárhoz
  196. defined('APPLICATION_PATH')
  197. || define('APPLICATION_PATH',
  198. realpath(dirname(__FILE__) . '/../application'));
  199. // Alkalmazáskörnyezet
  200. defined('APPLICATION_ENV')
  201. || define('APPLICATION_ENV',
  202. (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
  203. : 'production'));
  204. // Jellemzően az include_path-hoz hozzáadásra kerül a library/ könyvtár is,
  205. // főleg ha az tartalmazza a telepített ZF-t
  206. set_include_path(implode(PATH_SEPARATOR, array(
  207. dirname(dirname(__FILE__)) . '/library',
  208. get_include_path(),
  209. )));
  210. /** Zend_Application */
  211. require_once 'Zend/Application.php';
  212. // Alkalmazás létrehozása, betöltése és futtatása
  213. $application = new Zend_Application(
  214. APPLICATION_ENV,
  215. APPLICATION_PATH . '/configs/application.ini'
  216. );
  217. $application->bootstrap()
  218. ->run();
  219. ]]></programlisting>
  220. <para>
  221. Megfigyelhető, hogy az alkalmazáskörnyezet állandó egy
  222. „APPLICATION_ENV” környezeti változót keres, ennek beállítását a
  223. webkiszolgálói környezetben ajánljuk. Apache alatt ez megtehető a
  224. vhost beállításoknál vagy <filename>.htaccess</filename>
  225. állományban. A <filename>public/.htaccess</filename> ajánlott
  226. tartalma:
  227. </para>
  228. <programlisting language="conf"><![CDATA[
  229. SetEnv APPLICATION_ENV development
  230. RewriteEngine On
  231. RewriteCond %{REQUEST_FILENAME} -s [OR]
  232. RewriteCond %{REQUEST_FILENAME} -l [OR]
  233. RewriteCond %{REQUEST_FILENAME} -d
  234. RewriteRule ^.*$ - [NC,L]
  235. RewriteRule ^.*$ index.php [NC,L]
  236. ]]></programlisting>
  237. <note>
  238. <title>A mod_rewrite-ról</title>
  239. <para>
  240. A fenti átíró szabályok a virtuális kiszolgáló dokumentum
  241. gyökére alatti minden állományt elérhetővé tesznek. Ha
  242. ez nem kívánatos, a szabályok szigoríthatók. Továbbiakért lásd
  243. az Apache weblapjának
  244. <ulink url="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html">mod_rewrite fejezetét</ulink>.
  245. </para>
  246. </note>
  247. <para>
  248. Ennél a pontnál a <classname>Zend_Application</classname>
  249. működőképes.
  250. </para>
  251. </sect2>
  252. <sect2 id="zend.application.quick-start.resources">
  253. <title>Erőforrások hozzáadása és létrehozása</title>
  254. <para>
  255. A fentieket követve rendszertöltő osztály igénybe vesz, és
  256. futtatáskor elindít egy elülső vezérlőt. Azonban minden valószínűség
  257. szerint ennél egy kicsit több beállításra lesz szükség.
  258. </para>
  259. <para>
  260. Ebben a részben hozzáadunk az alkalmazásunkhoz két erőforrást.
  261. Első körben üzembe helyezzük az elrendezéseket, ezt követően pedig
  262. testreszabjuk a nézet objektumot.
  263. </para>
  264. <para>
  265. A <classname>Zend_Application</classname>-nel érkező erőforrások
  266. egyike az elrendezés, mely egy <classname>Zend_Layout</classname>
  267. példány beállításához szükséges konfiguráció megadását várja.
  268. </para>
  269. <para>
  270. Hogy használhassuk, mindössze a konfigurációs állományt kell
  271. frissítenünk.
  272. </para>
  273. <programlisting language="dosini"><![CDATA[
  274. [production]
  275. phpSettings.display_startup_errors = 0
  276. phpSettings.display_errors = 0
  277. bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
  278. bootstrap.class = "Bootstrap"
  279. resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
  280. ; Adjuk hozzá a következő sorokat
  281. resources.layout.layout = "layout"
  282. resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
  283. [staging : production]
  284. [testing : production]
  285. phpSettings.display_startup_errors = 1
  286. phpSettings.display_errors = 1
  287. [development : production]
  288. phpSettings.display_startup_errors = 1
  289. phpSettings.display_errors = 1
  290. ]]></programlisting>
  291. <para>
  292. Ha még nem tettük, hozzuk létre az
  293. <filename>application/layouts/scripts/</filename> könyvtárat, benne
  294. pedig a <filename>layout.phtml</filename> állományt. Egy jó
  295. elrendezés kezdésképp (ami az utána bemutatott nézettel is
  296. összhangban van):
  297. </para>
  298. <programlisting language="php"><![CDATA[
  299. <?php echo $this->doctype() ?>
  300. <html>
  301. <head>
  302. <?php echo $this->headTitle() ?>
  303. <?php echo $this->headLink() ?>
  304. <?php echo $this->headStyle() ?>
  305. <?php echo $this->headScript() ?>
  306. </head>
  307. <body>
  308. <?php echo $this->layout()->content ?>
  309. </body>
  310. </html>
  311. ]]></programlisting>
  312. <para>
  313. Ennél a pontnál rendelkezünk egy működő elrendezéssel.
  314. </para>
  315. <para>
  316. Most hozzáadunk egy saját nézet erőforrást. A nézet létrehozásakor
  317. be akarjuk állítani a <acronym>HTML</acronym> dokumentumtípust és
  318. egy alapértelmezett értéket a címnek, melyet a
  319. <acronym>HTML</acronym> dokumentumfejben használhatunk. Mindez
  320. eléréséhez <classname>Bootstrap</classname> osztályt bővítenünk kell
  321. egy tagfüggvénnyel:
  322. </para>
  323. <programlisting language="php"><![CDATA[
  324. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
  325. {
  326. protected function _initView()
  327. {
  328. // A nézet beállítása
  329. $view = new Zend_View();
  330. $view->doctype('XHTML1_STRICT');
  331. $view->headTitle('Első Zend Framework alkalmazásom');
  332. // Hozzáadás a ViewRendererhez
  333. $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper(
  334. 'ViewRenderer'
  335. );
  336. $viewRenderer->setView($view);
  337. // Visszaadjuk, hogy a eltárolódjon a rendszertöltőben
  338. return $view;
  339. }
  340. }
  341. ]]></programlisting>
  342. <para>
  343. A fenti tagfüggvény magától végre lesz hajtva betöltődéskor, és
  344. biztosítja, hogy a nézet az alkalmazás szükségletei szerint legyen
  345. beállítva.
  346. </para>
  347. </sect2>
  348. <sect2 id="zend.application.quick-start.next-steps">
  349. <title>Hogyan tovább</title>
  350. <para>
  351. A fentiek már elegendők kiindulásnak. A továbblépéshez hozzunk létre
  352. erőforrás-tagfüggvényeket, vagy – a teljes újrahasználhatóság
  353. jegyében – erőforrás bővítmény osztályokat. Olvassunk tovább!
  354. </para>
  355. </sect2>
  356. </sect1>