A front controller - Zend Framework kézikönyv
Zend_Controller_Front végrehajtja a „minta Front Controller. használt alkalmazások »MVC. Ennek célja, hogy inicializálja a kérelem környezet útvonalon a bejövő kérést, majd küldő ország bármely felfedezett intézkedéseket. Ez összesíti minden olyan válaszokat, és visszaadja őket, amikor a folyamat befejeződött.
Zend_Controller_Front is végrehajtja a „minta Singleton. Ez azt jelenti, hogy bármikor lehet csak úgy érheti el, ha egyetlen esetben ennek az osztálynak. Ez lehetővé teszi, hogy egyben a registry, amelyen a többi tárgyat a feladási folyamatát.
Zend_Controller_Front regisztrál egy Broker plugins (bővítmény iroda), amely lehetővé teszi a használó plugins nyomon események kezdeményezett elülső vezérlő. A legtöbb esetben, ez lehetővé teszi, hogy személyre szabott feladási folyamatát a helyszínen kiterjesztés nélkül a front controller hozzá funkciót.
Front-vezérlő működéséhez szükséges legalább egy vagy több utak tartalmazó könyvtárak fellépés vezérlők. Ön is használja a különböző módszerek, hogy tovább alakítani a front controller és asszisztensei.
Megjegyzés. Az alapértelmezett viselkedés
Alapértelmezésben az első vezérlő betölti a ErrorHandler dugó, és a ViewRenderer akció segítő. Ez úgy történik, hogy egyszerűsítse a hibakezelés és a renderelés a vezérlők, ill.
Tiltsa le a ErrorHandler. egy hívást, hogy a következő szállítmány () metódust.
// letiltása a ErrorHandler plugin:
$ Front -> setParam # 40; 'NoErrorHandler'. igaz # 41; ;
Tiltsa le a ViewRenderer. Kövesse az alábbi lépéseket a hívás küldő () metódust.
$ Front -> addControllerDirectory # 40; ”../modules/foo/controllers'. 'Foo' # 41; ;
Megjegyzés. Ha ön használ addControllerDirectory () nélkül modul nevét, akkor azt a könyvtárat az alapértelmezett modul. Ha a könyvtár már létezik, akkor felülírja.
Akkor kaphat az aktuális beállításokat a vezérlő könyvtárba getControllerDirectory () ;. Ez visszatér egy sor pár egység => könyvtárban.
Az egyik az első vezérlő az, hogy lehet meghatározni a moduláris könyvtár struktúra létrehozása önálló elemek, amelyek az úgynevezett „modulok”.
Minden modul kell elhelyezni a saját könyvtárában és tükrözze a könyvtár struktúrát az alapértelmezett modul - azaz tartalmaznia kell legalább az al-könyvtár „vezérlők”; vele, mint általában, van egy alkönyvtár „nézetek” könyvtárban és más alkalmazás.
addModuleDirectory () metódus támogatja küldését könyvtár neve, amely egy vagy több könyvtár modulokat. Ő ellenőrzi őket, és hozzáadja őket vezérlő könyvtárak az első vezérlő.
Ha azt szeretnénk, hogy egy utat, hogy egy adott modul, illetve az aktuális modul, akkor hívja getModuleDirectory (). átviteli modul neve, visszatér az elérési útvonalát, különben visszatér az utat az aktuális modult.
küldő (Zend_Controller_Request_Abstract $ request = null, Zend_Controller_Response_Abstract $ response = null) az "igásló" front controller. Ez adott esetben megteszi a lekérdezés objektum és / vagy a válasz objektumot. hogy ad a fejlesztők képesek átvinni a tárgyakat.
Ha a módszer a küldő () nem kérés vagy válasz tárgy telt el, akkor ellenőrizze a tárgyakat, és használja azokat, vagy példányosíthat alapértelmezett verzió (mindkét esetben a HTTP ízű lesz az alapértelmezett) már korábban regisztrált.
Hasonlóképpen, a küldő ország () ellenőrzi a már regisztrált router és diszpécser tárgyakat. és ha nem talál, akkor példányosít változata alapértelmezés szerint.
A küldő folyamat három különálló események:
Routing csak egyszer fordul elő, amikor a hívó küldő (). értékeit használva a kérés tárgya. Ütemezést ciklikusan. A kérelem jelezheti több műveletet, az adatkezelő vagy a plugin újraindítási kérelem további célja, hogy kezdeményezi egyéb intézkedéseket. Ha minden kész, a front controller választ ad vissza.
Zend_Controller_Front :: run ($ path) - a statikus módszer figyelembe egyszerűen egy utat, hogy egy könyvtár vezérlők. Ez beolvassa a példány az első vezérlő révén getInstance ()), regisztrálja a végig setControllerDirectory (). és vége felhívja küldő () módszer.
Alapvetően run () egy kényelmes módszer, melynek segítségével kiépítése során egy honlapot, amely nem igényel speciális beállítást az első vezérlő.
// példányosítunk front controller, állítsa vezérlő könyvtár és
// végrehajtás ütemezését egy hívással:
Zend_Controller_Front. futás # 40; ”../application/controllers' # 41; ;
Amellett, hogy a módszerek a fent felsorolt, ott akcesszor módszereket lehet használni, hogy ellenőrizzék a konfiguráció egy elülső vezérlő - és ezzel egyidejűleg osztályok, amelyek az elülső vezérlő küldöttek.
resetInstance () lehet használni, hogy állítsa vissza az aktuális beállításokat. Ez elsősorban a tesztelés, de azt is lehet használni azokban az esetekben, amikor szükség van a lánc együtt több front vezérlők.
(Set | get) DefaultControllerName () segítségével adjon meg egy másik nevet az alapértelmezett vezérlő (egyéb módon nem használják # „Index #”), és kap az aktuális értéket. Ezek szolgálnak a proxy a diszpécser.
(Set | get) DefaultAction () segítségével adjon meg egy másik nevet az alapértelmezett tevékenység (egyéb módon nem használják # „Index #”), és kap az aktuális értéket. Ezek szolgálnak a proxy a diszpécser.
(Set | get) Request () adhatja meg a kérést osztály vagy tárgy használata során a feladási folyamat, és letölteni az aktuális objektumot. Amikor telepítünk egy lekérdezési objektum, akkor át a kérést osztály nevét, és ebben az esetben az eljárás fogja betölteni az osztály fájlt, és példányosítani azt.
(Set | get) Router () segítségével adja meg a router osztály vagy tárgy használata során a feladási eljárás és letölteni az aktuális objektumot. Beállításakor az útválasztó tárgy, akkor adja át a router osztály nevét, és ebben az esetben az eljárás fogja betölteni az osztály fájlt, és példányosítani azt.
Amikor eltávolítja az első ellenőrzést készül router objektum be, amennyiben a front controller ilyen objektumot, és ha nem, akkor egy példányt az alapértelmezett útválasztó (átírási router).
(Set | get) baseURL () lehetővé teszi, hogy hozzanak az alap URL. amely szalag irányítása során kéri, és hogy megkapja az aktuális értéket. Ez az érték kerül továbbításra objektum kérelmet a routing.
(Set | get) diszpécser () adhatja meg a diszpécser osztály vagy tárgy használata során a feladási folyamat, és letölteni az aktuális objektumot. Amikor beállítja a diszpécser objektumra, akkor át a nevét a vezérlő osztályban, ebben az esetben az eljárás fogja betölteni az osztály fájlt, és példányosítani azt.
Amikor eltávolítja a diszpécser objektumot, az eljárás első ellenőrzi, hogy ott bemutatják az első vezérlő az ilyen tárgy és annak hiányában menedzser példányosítja az alapértelmezett.
(Set | get) válasz () adhatja meg a választ osztály vagy tárgy használata során a feladási folyamat, és letölteni az aktuális objektumot. Amikor telepíti a válasz objektumot, akkor át egy válasz osztály nevét, és ebben az esetben az eljárás fogja betölteni az osztály fájlt, és példányosítani azt.
registerPlugin (Zend_Controller_Plugin_Abstract $ bővítmény $ stackIndex = null) lehetővé teszi a plug-inek regisztrálni tárgyakat. Azáltal, hogy az opcionális $ stackIndex. szabályozni tudja a sorrendet, amelyben a plug-inek kerülnek végrehajtásra.
unregisterPlugin ($ bővítmény) tesszük regisztrációját bővítmény tárgyakat. $ Plugin lehet egy bővítmény tárgy vagy egy string, amely az osztály plugin regisztrációját.
throwExceptions ($ flag) használnak engedélyezése / tiltása a képesség, hogy dobja kivétel során a feladási eljárás. Alapértelmezésben kivételek kifogott és helyezzük a válasz objektum; befogadás throwExceptions () felülírja ezt a viselkedést
returnResponse ($ flag) használnak, hogy elmondja a front controller -, hogy térjen vissza a választ küldő () (TRUE), vagy ha a válasz elvileg automatikusan kibocsátott (HAMIS). Alapértelmezésben a válasz automatikusan (meghívásával Zend_Controller_Response_Abstract :: sendResponse ()); befogadás returnResponse () felülírja ezt a viselkedést.
Helyzetek, amikor a visszatérítési kérelem válasz tartalmazhatja ellenőrzése kivételek elküldése előtt választ az ügyfél, hogy szükség van a naplózó a különböző aspektusait a válasz (mint például a fej-), stb
A bevezetőben jeleztük, hogy az első vezérlő is működik, mint egy registry bármilyen vezérlő komponens. Ez megvalósítható a csoporton keresztül a technikák a paraméterek. Ezek a módszerek lehetővé teszik, hogy regisztrálja tetszőleges adat - objektumok és változók - a front controller úgy, hogy lehet letölteni bármely pontján a feladó lánc. Ezeket az értékeket továbbítja a router, diszpécser és a cselekvés vezérlők. Ezen eljárások közé tartoznak:
setParam ($ name, $ value) lehetővé teszi, hogy egyetlen paraméter $ name értékű $ értékű.
setParams (array $ params) lehetővé teszi, hogy több paraméter egyidejű használata egy asszociatív tömb.
getParam ($ name) lehetővé teszi, hogy távolítsa el az egyik paraméter egy időben, a neve $ name hivatkozik.
getParams () segítségével lekérdezheti az összes paramétert egyszerre.
clearParams () lehetővé teszi, hogy távolítsa el egy paramétert (string továbbítása által azonosító), számos paraméter (átadásával tömb string azonosítókat is), vagy az egész köteg paraméterek (közlése nélkül semmit).
Számos előre definiált beállítás kifejezetten a feladó lánc:
useDefaultControllerAlways használható, hogy jelezze a diszpécser. azt használja az alapértelmezett vezérlő az alapértelmezett modul minden kérést, amely nem dispatchable (azaz a modul, vezérlő és / vagy cselekvési nem létezik). Alapértelmezésben le van tiltva.
Lásd. Kivételek az MVC, akikkel találkozhatnak További információ felhasználásával ezt a beállítást.
disableOutputBuffering jelöli, hogy a diszpécser. nem használhatja a kimenet pufferelés elfog kiadási hatására keletkező vezérlők. Alapértelmezésben a diszpécser rögzít minden kiadási és hozzáfűzi, hogy a test tartalom a válasz objektumot.
noViewRenderer tiltani a ViewRenderer. Állítsa ezt a paramétert true kikapcsolni.
noErrorHandler kikapcsolhatja az Error Handler bővítmény Állítsa ezt a paramétert true kikapcsolni.
Az egymás után elölről vezérlő, a minimálisan szükséges, felülírhatja getInstance () módszer.