File: Zend_Controller-Basics.xml

package info (click to toggle)
zendframework 1.12.9%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 133,584 kB
  • sloc: xml: 1,311,829; php: 570,173; sh: 170; makefile: 125; sql: 121
file content (167 lines) | stat: -rw-r--r-- 10,442 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
<sect1 id="zend.controller.basics">
    <title>Zend_Controller alapok</title>
    <para>
        A
        <code>Zend_Controller</code>
        rendszert könnyűnek, modulárisnak és kiterjeszthetőnek tervezték. Minimalista kivitelezés, hogy rugalmasságot és szabadságot engedjen a felhasználóknak, miközben elegendő szerkezetet nyújt hozzá, hogy a
        <code>Zend_Controller</code>
        köré épült rendszerek néhány gyakori egyezményen és hasonló kódelrendezésen osztozzanak.
    </para>
    <para>
        A következő ábra bemutatja a munkafolyamatot, az utána következőkben pedig részletesen leírjuk a kölcsönhatásokat:
    </para>
    <para>
        <inlinegraphic
            align="center"
            fileref="figures/zend.controller.basics.png"
            format="PNG"
            scale="100"
            valign="middle"
            width="483"
        />
    </para>
    <para>
        A
        <code>Zend_Controller</code>
        munkafolyamatot több összetevő valósítja meg. Habár nem szükséges teljesen megérteni ezen összetevők működését ahhoz, hogy használjuk a rendszert, a folyamat gyakorlati ismerete hasznos lehet.
    </para>
        <itemizedlist>
            <listitem>
                <para>
                    A
                    <code>Zend_Controller_Front</code>
                    hangszereli a
                    <code>Zend_Controller</code>
                    rendszer teljes munkafolyamatát. Az Elülső Vezérlő minta egy megvalósítása. A
                    <code>Zend_Controller_Front</code> dolgozza fel a kiszolgáló által fogadott összes kérést, és teljes egészében felelős a kérések Műveletvezérlőkhöz (<code>Zend_Controller_Action</code>) való kiküldéséért.
                </para>
            </listitem>
            <listitem>
                <para>
                    A
                    <code>Zend_Controller_Request_Abstract</code>
                    (gyakran csak mint a
                    <code>Kérés Objektum</code>)
                    képviseli a kérés környezetét és tagfüggvények segítségével lehetővé teszi a vezérlő és művelet nevek, illetve minden kérés-paraméter beállítását és kinyerését. Továbbá számon tartja, hogy a művelet, amit tartalmaz, el lett-e indítva a
                    <code>Zend_Controller_Dispatcher</code>
                    által vagy sem. Az elvont kérés objektum kiterjesztései felhasználhatók a teljes környezet megukba foglalására, lehetővé téve az útválasztóknak, hogy információt szedjenek ki belőle a vezérlő és művelet nevek beállítása céljából.
                </para>
                <para>
                    Alapból a
                    <code>Zend_Controller_Request_Http</code>
                    van használva, mely a teljes HTTP kéréskörnyezethez hozzáférést biztosít.
                </para>
            </listitem>
            <listitem>
                <para>
                    A
                    <code>Zend_Controller_Router_Interface</code>-t
                    útválasztók meghatározásához használjuk. Az útválasztás az a folyamat, melynek során a kéréskörnyezet alapján eldöntjük melyik vezérlőnek, és eme vezérlőnek mely műveletének kell a kérést fogadnia. Ez a vezérlő, művelet és esetleges más paraméterek aztán bekerülnek a kérés objektumba, hogy aztán feldolgozásra kerüljenek a
                    <code>Zend_Controller_Dispatcher_Standard</code>
                    által. Útválasztás csak pontosan egyszer zajlik: mikor a kérés megérkezik, az első művelet elindítása előtt.
                </para>
                <para>
                    Az alapértelmezett útválasztó, a
                    <code>Zend_Controller_Router_Route_Rewrite</code>
                    vesz egy URI végpontot, ahogy az a
                    <code>Zend_Controller_Request_Http</code>-ben
                    van megadva, majd szétbontja azt egy vezérlőre, műveletre és paraméterekre az URL-ben szereplő elérési út alapján. Példának okáért a
                    <code>http://localhost/ize/bigyo/kulcs/ertek</code>
                    URL-t visszafejtve az
                    <code>ize</code>
                    vezérlő, a
                    <code>bigyo</code>
                    művelet lesz használva, megadva a
                    <code>kulcs</code>
                    paramétert
                    <code>ertek</code>
                    értékkel.
                </para>
                <para>
                    <code>A Zend_Controller_Router_Rewrite</code>-ot
                    egyéni elérési utaknak is meg lehet feleltetni; további inforációkért lásd
                    <link linkend="zend.controller.router">az útválasztó dokumentációját</link>.
                </para>
            </listitem>
            <listitem>
                <para>
                    A
                    <code>Zend_Controller_Dispatcher_Interface</code>-t
                    kézbesítők meghatározására használjuk. A kézbesítés a folyamat, amely során kinyerjük a vezérlőt és a műveletet a kérés objektumból és leképezzük egy vezérlő állományra/osztályra és művelet tagfüggvényre a vezérlő osztályban. Ha a vezérlő vagy a művelet nem létezik, meghatározza az alapértelmezett vezérlőt és műveletet, aminek kézbesíteni kell.
                </para>
                <para>
                    Maga a kézbesítés folyamata a vezérlő példányosításából és az ebben az osztályban lévő művelet tagfüggvény meghívásából áll. Eltérően az útválasztástól, ami csak egyszer történik, a kézbesítés ciklikusan zajlik. Ha a kérés objektum kézbesített állapotát bármikor visszaállítjuk, a ciklus megismétlődik, meghívva azt a műveletet, ami a kérés objektumban épp be van állítva. Az első alkalommal, amikor a ciklus úgy végződik, hogy a kérés objektum kézbesített állapotba van állítva (logikai igaz), a folyamat megáll.
                </para>
                <para>
                    Az alapértelmezett kézbesítő a
                    <code>Zend_Controller_Dispatcher_Standard</code>.
                    Ez a vezérlőket a Controller szóra végződő, TeveBetűzöttOsztályokként határozzza meg, a művelet tagfüggvényeket pedig az Action szóra végződő teveBetűzöttTagfüggvényekként:
                    <code>IzeController::bigyoAction()</code>.
                    Ebben az esetben a vezérlőre
                    <code>ize</code>ként,
                    a műveletre pedig
                    <code>bigyo</code>ként
                    hivatkozhatunk.
                </para>
                <note>
                    <title>TeveBetűzöttElnevezésiMegállapodások</title>
                    <para>
                        Mivel az emberek közismerten következetlenek a betűzés megtartásában hivatkozások gépelésekor, a Zend Framework egységesen kisbetűsre alakítja az elérési utakat. Ez természetesen kihatással lesz arra, hogyan nevezed el a vezérlőid és műveleteid… vagy hogyan utalsz rájuk a hivatkozásokban.
                    </para>
                    <para>
                        Ha szeretnéd, hogy a vezérlő osztályod vagy műveletneved több TeveBetűzöttSzóból álljon, ezeket a szavakat az URL-ben egy kötőjellel vagy egy ponttal kell elválasztanod (habár beállíthatod a használandó karaktert).
                    </para>
                    <para>
                        A példa kedvéért, ha az
                        <code>IzeBigyoController::bigyoBigyocskaAction()</code>
                        műveletet akarod elérni, akkor mint
                        <code>/ize-bigyo/bigyo-bigyocska</code>
                        vagy
                        <code>/ize-bigyo/bigyo-bigyocska</code>
                        kell hivatkoznod rájuk az URL-ben.
                    </para>
                </note>
            </listitem>
            <listitem>
                <para>
                    A
                    <code>Zend_Controller_Action</code>
                    az alap műveletvezérlő összetevő. Minden vezérlő egy osztály, ami a
                    <code>Zend_Controller_Action</code>
                    osztálytól örököl, és egy vagy több művelet tagfüggvényt kell tartalmaznia.
                </para>
            </listitem>
            <listitem>
                <para>
                    A
                    <code>Zend_Controller_Response_Abstract</code>
                    ír le egy a műveletvezérlőkből a válaszok összegyűjtésére és visszaküldésére használt alap válasz osztályt. Mind a fejléc, mind pedig a törzs tartalmat összegyűjti.
                </para>
                <para>
                    Az alapértelmezett válasz osztály a
                    <code>Zend_Controller_Response_Http</code>,
                    amely a HTTP környezetben való használatra alkalmas.
                </para>
            </listitem>
        </itemizedlist>
    <para>
        A
        <code>Zend_Controller</code>
        munkafolyamata viszonylag egyszerű. A
        <code>Zend_Controller_Front</code>
        fogadja a kérést, majd meghívja a
        <code>Zend_Controller_Router_Rewrite</code>-ot,
        hogy megállapítsa, melyik vezérlőnek (és műveletnek abban a vezérlőben) kézbesítsen. A
        <code>Zend_Controller_Router_Rewrite</code>
        felbontja az URI-t, hogy beállítsa a vezérlő és művelet neveket a kérésben. Ezután a
        <code>Zend_Controller_Front</code>
        belép a kézbesítési ciklusba. Meghívja a
        <code>Zend_Controller_Dispatcher_Standard</code>-et,
        átadva a kérést, hogy kézbesítse a kérésben megadott (vagy az alapbeállítású) vezérlőnek és a műveletnek. Miután a vezérlő végzett, az irányítás visszakerül a
        <code>Zend_Controller_Front</code>-hoz.
        Ha a vezérlő a kérés kézbesített állapotának visszaállításával jelezte, hogy egy másik vezérlőnek kell kézbesíteni, a ciklus folytatódik és újabb kézbesítés következik. Egyébként a folyamat leáll.
    </para>
</sect1>
<!--
vim:se ts=4 sw=4 et:
-->