|
|
@@ -0,0 +1,422 @@
|
|
|
+<?xml version="1.0" encoding="UTF-8"?>
|
|
|
+<!-- Reviewed: no -->
|
|
|
+<sect1 id="zend.application.quick-start">
|
|
|
+ <title>Gyorstalpaló</title>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Két útja van a <classname>Zend_Application</classname> használatba
|
|
|
+ vételének, attól függően, hogyan kezdjük projektünket. Mindkét esetben
|
|
|
+ egy <classname>Bootstrap</classname> osztály és egy vonatkozó
|
|
|
+ konfigurációs állomány létrehozása az első.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ A folytatásban egy projekt <classname>Zend_Tool</classname>-lal való
|
|
|
+ létrehozása, ezt
|
|
|
+ <link linkend="zend.application.quick-start.manual">átugorva</link>
|
|
|
+ pedig a <classname>Zend_Application</classname> egy létező projekthez
|
|
|
+ való hozzáadása olvasható.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <sect2 id="zend.application.quick-start.zend-tool">
|
|
|
+ <title>A Zend_Tool használata</title>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ A <classname>Zend_Application</classname> használatba vételének
|
|
|
+ leggyorsabb módja a <classname>Zend_Tool</classname> munkába
|
|
|
+ állítása a projekt képzéshez. Ez egyúttal létrehozza a
|
|
|
+ <classname>Bootstrap</classname> osztályt és állományt.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Projekt generálásához végre kell hajtani a <command>zf</command>
|
|
|
+ parancsot (*nix rendszereken):
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="sh"><![CDATA[
|
|
|
+% zf create project newproject
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Vagy a Windows <filename>zf.bat</filename> parancsát:
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="dos"><![CDATA[
|
|
|
+C:> zf.bat create project newproject
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Mindkettő a következőképp festő projekt szerkezetet alakítja ki:
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="text"><![CDATA[
|
|
|
+newproject
|
|
|
+|-- application
|
|
|
+| |-- Bootstrap.php
|
|
|
+| |-- configs
|
|
|
+| | `-- application.ini
|
|
|
+| |-- controllers
|
|
|
+| | |-- ErrorController.php
|
|
|
+| | `-- IndexController.php
|
|
|
+| |-- models
|
|
|
+| `-- views
|
|
|
+| |-- helpers
|
|
|
+| `-- scripts
|
|
|
+| |-- error
|
|
|
+| | `-- error.phtml
|
|
|
+| `-- index
|
|
|
+| `-- index.phtml
|
|
|
+|-- library
|
|
|
+|-- public
|
|
|
+| `-- index.php
|
|
|
+`-- tests
|
|
|
+ |-- application
|
|
|
+ | `-- bootstrap.php
|
|
|
+ |-- library
|
|
|
+ | `-- bootstrap.php
|
|
|
+ `-- phpunit.xml
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ A fenti ábrán a rendszertöltő a
|
|
|
+ <filename>newproject/application/Bootstrap.php</filename>
|
|
|
+ állományban található, és elsőre a következőképp néz ki:
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
+class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
|
|
|
+{
|
|
|
+}
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Ezen kívül egy konfigurációs állomány is létrejött
|
|
|
+ <filename>newproject/application/configs/application.ini</filename>
|
|
|
+ néven, az alábbiakkal:
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="dosini"><![CDATA[
|
|
|
+[production]
|
|
|
+phpSettings.display_startup_errors = 0
|
|
|
+phpSettings.display_errors = 0
|
|
|
+includePaths.library = APPLICATION_PATH "/../library"
|
|
|
+bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
|
|
|
+bootstrap.class = "Bootstrap"
|
|
|
+resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
|
|
|
+
|
|
|
+[staging : production]
|
|
|
+
|
|
|
+[testing : production]
|
|
|
+phpSettings.display_startup_errors = 1
|
|
|
+phpSettings.display_errors = 1
|
|
|
+
|
|
|
+[development : production]
|
|
|
+phpSettings.display_startup_errors = 1
|
|
|
+phpSettings.display_errors = 1
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Az összes ebben található beállítás a
|
|
|
+ <classname>Zend_Application</classname>-nel és a rendszertöltővel
|
|
|
+ történő használat célját szolgálja.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Egy másik érdeklődésre számot tartó állomány a
|
|
|
+ <filename>newproject/public/index.php</filename>, mely meghívja és
|
|
|
+ elindítja a <classname>Zend_Application</classname>-t.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
+// Define path to application directory
|
|
|
+defined('APPLICATION_PATH')
|
|
|
+ || define('APPLICATION_PATH',
|
|
|
+ realpath(dirname(__FILE__) . '/../application'));
|
|
|
+
|
|
|
+// Define application environment
|
|
|
+defined('APPLICATION_ENV')
|
|
|
+ || define('APPLICATION_ENV',
|
|
|
+ (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
|
|
|
+ : 'production'));
|
|
|
+
|
|
|
+/** Zend_Application */
|
|
|
+require_once 'Zend/Application.php';
|
|
|
+
|
|
|
+// Create application, bootstrap, and run
|
|
|
+$application = new Zend_Application(
|
|
|
+ APPLICATION_ENV,
|
|
|
+ APPLICATION_PATH . '/configs/application.ini'
|
|
|
+);
|
|
|
+$application->bootstrap()
|
|
|
+ ->run();
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Folytatás az
|
|
|
+ <link linkend="zend.application.quick-start.resources">erősforrásokról</link>
|
|
|
+ szóló résznél.
|
|
|
+ </para>
|
|
|
+ </sect2>
|
|
|
+
|
|
|
+ <sect2 id="zend.application.quick-start.manual">
|
|
|
+ <title>Hozzáadás az alkalmazáshoz</title>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ A <classname>Zend_Application</classname> alapjai meglehetősen
|
|
|
+ egyszerűek:
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <itemizedlist>
|
|
|
+ <listitem><para>
|
|
|
+ Az <filename>application/Bootstrap.php</filename> állomány
|
|
|
+ létrehozása benne a <classname>Bootstrap</classname> osztállyal.
|
|
|
+ </para></listitem>
|
|
|
+
|
|
|
+ <listitem><para>
|
|
|
+ Az <filename>application/configs/application.ini</filename>
|
|
|
+ konfigurációs állomány elkészítése az alapvető beállításokkal.
|
|
|
+ </para></listitem>
|
|
|
+
|
|
|
+ <listitem><para>
|
|
|
+ A <filename>public/index.php</filename> átalakítása.
|
|
|
+ </para></listitem>
|
|
|
+ </itemizedlist>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Elsőként létre kell hozni a <classname>Bootstrap</classname>
|
|
|
+ osztályt az <filename>application/Bootstrap.php</filename>-ban, a
|
|
|
+ következőkkel:
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
+class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
|
|
|
+{
|
|
|
+}
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Ha ez megvan, el kell készíteni a konfigurációs állományt. Ezen
|
|
|
+ oktatóanyag keretében egy <acronym>INI</acronym> stílusú beállítást
|
|
|
+ használunk; ugyanígy használható persze <acronym>XML</acronym> vagy
|
|
|
+ <acronym>PHP</acronym> is. Az
|
|
|
+ <filename>application/configs/application.ini</filename> tartalma:
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="dosini"><![CDATA[
|
|
|
+[production]
|
|
|
+phpSettings.display_startup_errors = 0
|
|
|
+phpSettings.display_errors = 0
|
|
|
+includePaths.library = APPLICATION_PATH "/../library"
|
|
|
+bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
|
|
|
+bootstrap.class = "Bootstrap"
|
|
|
+resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
|
|
|
+
|
|
|
+[staging : production]
|
|
|
+
|
|
|
+[testing : production]
|
|
|
+phpSettings.display_startup_errors = 1
|
|
|
+phpSettings.display_errors = 1
|
|
|
+
|
|
|
+[development : production]
|
|
|
+phpSettings.display_startup_errors = 1
|
|
|
+phpSettings.display_errors = 1
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Most pedig alakítsuk át <filename>public/index.php</filename>
|
|
|
+ kapu-szkriptünk. Ha az állomány nem létezik, hozzuk létre, ha igen,
|
|
|
+ cseréljük le a tartalmát:
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
+// Elérési út az alkalmazás könyvtárhoz
|
|
|
+defined('APPLICATION_PATH')
|
|
|
+ || define('APPLICATION_PATH',
|
|
|
+ realpath(dirname(__FILE__) . '/../application'));
|
|
|
+
|
|
|
+// Alkalmazáskörnyezet
|
|
|
+defined('APPLICATION_ENV')
|
|
|
+ || define('APPLICATION_ENV',
|
|
|
+ (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
|
|
|
+ : 'production'));
|
|
|
+
|
|
|
+// Jellemzően az include_path-hoz hozzáadásra kerül a library/ könyvtár is,
|
|
|
+// főleg ha az tartalmazza a telepített ZF-t
|
|
|
+set_include_path(implode(PATH_SEPARATOR, array(
|
|
|
+ dirname(dirname(__FILE__)) . '/library',
|
|
|
+ get_include_path(),
|
|
|
+)));
|
|
|
+
|
|
|
+/** Zend_Application */
|
|
|
+require_once 'Zend/Application.php';
|
|
|
+
|
|
|
+// Alkalmazás létrehozása, betöltése és futtatása
|
|
|
+$application = new Zend_Application(
|
|
|
+ APPLICATION_ENV,
|
|
|
+ APPLICATION_PATH . '/configs/application.ini'
|
|
|
+);
|
|
|
+$application->bootstrap()
|
|
|
+ ->run();
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Megfigyelhető, hogy az alkalmazáskörnyezet állandó egy
|
|
|
+ „APPLICATION_ENV” környezeti változót keres, ennek beállítását a
|
|
|
+ webkiszolgálói környezetben ajánljuk. Apache alatt ez megtehető a
|
|
|
+ vhost beállításoknál vagy <filename>.htaccess</filename>
|
|
|
+ állományban. A <filename>public/.htaccess</filename> ajánlott
|
|
|
+ tartalma:
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="conf"><![CDATA[
|
|
|
+SetEnv APPLICATION_ENV development
|
|
|
+
|
|
|
+RewriteEngine On
|
|
|
+RewriteCond %{REQUEST_FILENAME} -s [OR]
|
|
|
+RewriteCond %{REQUEST_FILENAME} -l [OR]
|
|
|
+RewriteCond %{REQUEST_FILENAME} -d
|
|
|
+RewriteRule ^.*$ - [NC,L]
|
|
|
+RewriteRule ^.*$ index.php [NC,L]
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
+ <note>
|
|
|
+ <title>A mod_rewrite-ról</title>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ A fenti átíró szabályok a virtuális gazdagép dokumentum
|
|
|
+ gyökérkönyvtára alatti minden állományt elérhetővé tesznek. Ha
|
|
|
+ ez nem kívánatos, a szabályok szigoríthatók. Továbbiakért lásd
|
|
|
+ az Apache weblapjának
|
|
|
+ <ulink url="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html">mod_rewrite fejezetét</ulink>.
|
|
|
+ </para>
|
|
|
+ </note>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Ennél a pontnál a <classname>Zend_Application</classname>
|
|
|
+ működőképes.
|
|
|
+ </para>
|
|
|
+ </sect2>
|
|
|
+
|
|
|
+ <sect2 id="zend.application.quick-start.resources">
|
|
|
+ <title>Erőforrások hozzáadása és létrehozása</title>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ A fentieket követve rendszertöltő osztály igénybe vesz, és
|
|
|
+ futtatáskor elindít egy elülső vezérlőt. Azonban minden valószínűség
|
|
|
+ szerint ennél egy kicsit több beállításra lesz szükség.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Ebben a részben hozzáadunk az alkalmazásunkhoz két erőforrást.
|
|
|
+ Első körben üzembe helyezzük az elrendezéseket, ezt követően pedig
|
|
|
+ testreszabjuk a nézet objektumot.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ A <classname>Zend_Application</classname>-nel érkező erőforrások
|
|
|
+ egyike az elrendezés, mely egy <classname>Zend_Layout</classname>
|
|
|
+ példány beállításához szükséges konfiguráció megadását várja.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Hogy használhassuk, mindössze a konfigurációs állományt kell
|
|
|
+ frissítenünk.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="dosini"><![CDATA[
|
|
|
+[production]
|
|
|
+phpSettings.display_startup_errors = 0
|
|
|
+phpSettings.display_errors = 0
|
|
|
+bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
|
|
|
+bootstrap.class = "Bootstrap"
|
|
|
+resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
|
|
|
+; Adjuk hozzá a következő sorokat
|
|
|
+resources.layout.layout = "layout"
|
|
|
+resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
|
|
|
+
|
|
|
+[staging : production]
|
|
|
+
|
|
|
+[testing : production]
|
|
|
+phpSettings.display_startup_errors = 1
|
|
|
+phpSettings.display_errors = 1
|
|
|
+
|
|
|
+[development : production]
|
|
|
+phpSettings.display_startup_errors = 1
|
|
|
+phpSettings.display_errors = 1
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Ha még nem tettük, hozzuk létre az
|
|
|
+ <filename>application/layouts/scripts/</filename> könyvtárat, benne
|
|
|
+ pedig a <filename>layout.phtml</filename> állományt. Egy jó
|
|
|
+ elrendezés kezdésképp (ami az utána bemutatott nézettel is
|
|
|
+ összhangban van):
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
+<?php echo $this->doctype() ?>
|
|
|
+<html>
|
|
|
+<head>
|
|
|
+ <?php echo $this->headTitle() ?>
|
|
|
+ <?php echo $this->headLink() ?>
|
|
|
+ <?php echo $this->headStyle() ?>
|
|
|
+ <?php echo $this->headScript() ?>
|
|
|
+</head>
|
|
|
+<body>
|
|
|
+ <?php echo $this->layout()->content ?>
|
|
|
+</body>
|
|
|
+</html>
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Ennél a pontnál rendelkezünk egy működő elrendezéssel.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Most hozzáadunk egy saját nézet erőforrást. A nézet létrehozásakor
|
|
|
+ be akarjuk állítani a <acronym>HTML</acronym> dokumentumtípust és
|
|
|
+ egy alapértelmezett értéket a címnek, melyet a
|
|
|
+ <acronym>HTML</acronym> dokumentumfejben használhatunk. Mindez
|
|
|
+ eléréséhez <classname>Bootstrap</classname> osztályt bővítenünk kell
|
|
|
+ egy tagfüggvénnyel:
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
+class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
|
|
|
+{
|
|
|
+ protected function _initView()
|
|
|
+ {
|
|
|
+ // A nézet beállítása
|
|
|
+ $view = new Zend_View();
|
|
|
+ $view->doctype('XHTML1_STRICT');
|
|
|
+ $view->headTitle('Első Zend Framework alkalmazásom');
|
|
|
+
|
|
|
+ // Hozzáadás a ViewRendererhez
|
|
|
+ $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper(
|
|
|
+ 'ViewRenderer'
|
|
|
+ );
|
|
|
+ $viewRenderer->setView($view);
|
|
|
+
|
|
|
+ // Visszaadjuk, hogy a eltárolódjon a rendszertöltőben
|
|
|
+ return $view;
|
|
|
+ }
|
|
|
+}
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ A fenti tagfüggvény magától végre lesz hajtva betöltődéskor, és
|
|
|
+ biztosítja, hogy a nézet az alkalmazás szükségletei szerint legyen
|
|
|
+ beállítva.
|
|
|
+ </para>
|
|
|
+ </sect2>
|
|
|
+
|
|
|
+ <sect2 id="zend.application.quick-start.next-steps">
|
|
|
+ <title>Hogyan tovább</title>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ A fentiek már elegendők kiindulásnak. A továbblépéshez hozzunk létre
|
|
|
+ erőforrás-tagfüggvényeket, vagy – a teljes újrahasználhatóság
|
|
|
+ jegyében – erőforrás bővítmény osztályokat. Olvassunk tovább!
|
|
|
+ </para>
|
|
|
+ </sect2>
|
|
|
+</sect1>
|