Zend_Application-QuickStart.xml 14 KB

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