Naked Zend_Layout og Zend_View

By Steven Lloyd Watkin Þriðjudagur 10 Ágúst 2010 23:47

Í þessari grein sem ég líta á að nota Zend_Layout og Zend_View ásamt einföldum framan stjórnandi til að sýna hvernig það er hægt að byrja að aðgreina fyrirtæki rökfræði og kynningu innan umsókn þína. Allan kóðann er að finna á GitHub:
Naked Zend_Layout og Zend_View á GitHub .

MVC

Algeng hönnun mynstur fyrir nútíma forrit vefur er MVC mynstur. The Zend Framework ham í 'fullum stafla er ein framkvæmd MVC í PHP og samanstendur af þremur hlutum:

  • Model (M)
  • Skoða (V)
  • Controller (C)

Mynstrið er hannað þannig að fyrirtæki og kynningu rökfræði eru algjörlega aðskildar frá öðrum (með rökfræði fyrirtæki í gerð, og kynningu í augum) og stjórnandi situr í miðju stunda "hljómsveit".

Kynning og Logic

Í Zend Framework útsýnið er stjórnað með tvo meginþætti: Zend_View og Zend_Layout. Zend_Layout eins og nafnið gefur til kynna sér um skipulag hlið af the staður (yfirleitt haus, fætur, skenkur, etc.) Zend_View Einbeitir á að kynna gögn sem gerð hefur verið að vinna í að framleiða eða öðlast.

Eins og verktaki, og umsóknir þeirra, þróast við tilhneigingu til að fara í gegnum mismunandi stigum, yfirleitt hvert framfarir á undan, bæta viðhalds og Extensibility. Eitt af helstu málefnum er að kynningu og rökfræði enn fengið blandað saman og einfalt þess ekki að byrja að aðgreina tvö.

Hvað er athugavert við blöndun tveggja?

Ostrich Það er ýmsar ástæður fyrir því að blanda saman mismunandi hlutum af forritinu, td hönnuður vinna á síðuna þína getur ekki vilja (eða hafa þekkingu) til að skanna um í númerið að reyna að vinna út hvar á að gera kynningu breytingar. Á sama hátt og verktaki (ef þú ert eins og mig sem hefur hönnun hæfileika þessa Ostrich) getur brjótast út í köldu svita þegar þú nefnir hönnun eða HÍ vinna.

Auk þess hvað ef seinna þú vildi eins og til kynna vefsvæði þitt á mismunandi miðla, ss síma, tafla PCs, eða afhjúpa gögn í gegnum vefþjónustur (XML / JSON / etc)? Hafa blandað kynningu og rökfræði þú stendur nánast enga von án þess að nokkur mjög ljót járnsög að draga framsetningu aftur út úr kóðanum þínum, áður en breiða eitthvað nýtt. Ef gögn og kynning hefur verið skilin að gera þessar breytingar eru nánast léttvæg, búa til nýja sýn handrit fyrir nýju sniði og beina beiðnum sem við á.

Aðgreina tvö

Í stöðugri þróun umsókn þess ekki alltaf hagkvæmt að byrja að innleiða fullt MVC lausn og forrit þarf að vera fluttur hægt - stundum keyra gamla númerið samhliða nýju. Það kannski að það eru helling af skynsemi (eins og gagnasafn tengingu skipulag, staðfesting, cookie handling, etc) sem eru ekki tilbúin fyrir mótun við valið ramma skipulag, því gamla og þekkt-til-að-vinna-númer er hægt að halda áfram að vera notuð þar til það er hægt að endurskrifa / refactored.

Til athugunar: Notkun Zend_Layout og Zend_View eins og þetta er fullkomlega ásættanlegt innan Zend Framework landslag og umgjörð hefur verið hannaður þannig að einstakir hlutar þess geta vera notaður án the hvíla af ramma. Mikill kostur í þróun umsókna og sennilega einn af helstu ástæður fyrir upptöku hennar hár í umsókn fyrirtækisins.

Front Controller

Hér ég búið að framan stjórnandi - einni skrá sem ætlað er að ná sér í hvaða beiðnir sem ekki kemur að skrá á skrá-kerfi. Þetta er oft náð með. Htaccess skrá eins og er notað í sjálfgefna Zend Framework setja í embætti. Innan framan stjórnandi Ég mun vera að setja upp skipulag okkar og skoða og sýna þar sem mismunandi hluta umsóknarinnar miði inn í það.

  define ('APP_PATH', dirname (__FILE__).'/..');
 / / Start höggdeyfir framleiðsla
 ob_start ();

 / / Create a Zend_View dæmis
 Zend_Layout:: startMvc ();
 $ Skipulag = Zend_Layout:: getMvcInstance ();
 $ Skipulag-> setLayoutPath (APP_PATH. '/ Skipulag / forskriftir')
     -> SetViewSuffix ('phtml')
     -> SetLayout ('vísitalan');

 $ Skoðað = $ skipulag-> getView ()
     -> SetScriptPath (APP_PATH '/ skoða / forskriftir'.)
     -> AddHelperPath (. APP_PATH '/ bókasafn / Zend / View / Helper', 'Zend_View_Helper');

 / / Set Base URL - allt í lagi * næstum * nakinn, en þú þarft þetta ekki!
 Zend_Controller_Front:: getInstance () -> setBaseUrl ($ _SERVER ['HTTP_HOST']);

 reyndu {
     / **
      * Framkvæma sum forrit vegvísun ...
      * - Gæti verið að nota þetta sem að framan stjórnandi og stýra öllum beiðnum
      * Gegnum þetta eina skrá (sem skrá er ekki til í skrá kerfi
      * - Ath aðferðina hér á eftir er bara virkilega að sýna, að það væri
      * Hryllilegur með stór staður
      * /
     rofi ($ ['síðu'] _GET) {
    	 tilfelli 'Vísitala':
    	 tilfelli 'undantekningu':
    		 $ PageName = $ ['síðu'] _GET;
    		 brot;
    	 vanræksla:
    		 $ PageName = false;
    		 brot;
     }
     / / Dæmi um síðu ekki að stofna ...
     if (rangar === $ pageName) {
         $ ResponseHeader = 'HTTP/1.1 404 Page Not Found ";
         kasta nýju Exception ("Page Not Found");
     }

     / **
      * Bæta við gögnum til að skoða þinn hlut hér
      * Þú getur haft eigin stjórnandi framkvæmd þinn eða einhver inniheldur skrár
      * Þar sem fyrirtæki rökfræði er að hluta til aðskilinn frá rökfræði skoða
      * /
     $ View-> displayText = 'Halló frá Lloyd';
     $ View-> buttonText = 'I \' m ekki virkur!;

	 $ Skipulag-> efni = $ view-> bakið (". {$ PageName} phtml");
     echo $ skipulag-> Render ();
 } Veiða (Undantekning $ e) {
	 / / Clean út þegar biðminni efni - við viljum ekki að sýna það!
	 ob_clean ();
     if (! isset ($ responseHeader)) {
    	 $ ResponseHeader = 'HTTP/1.1 500 Internal Server Error ";
     }
     haus ($ responseHeader);
     $ View-> undantekning = $ e;
     $ Skipulag-> efni = $ view-> Render ('error.phtml');
     echo $ skipulag-> Render ();
 } 

Í fyrsta lagi byrjum við framleiðsla höggdeyfir, með því að gera þetta við getum sett hausum okkar á hverjum tíma í beiðnina og veit að það er hægt að senda þau. Ætti undantekning að vera varpað á hvaða stigi merkjamál framkvæmd við hreinsa þennan stuðpúði og skrifa út eða villuboð innihald og skipulag. Þetta tryggir að við gerum skila ekki hluti veitt efni sem innihalda villur til the endir notandi.

Næsta nýtt MVC dæmi af Zend_Layout er búin til og við segjum það sem út skipulag forskriftir hafa endinguna phtml, er að finna í möppu utan almennings leið, og að vanræksla skipulag okkar heitir vísitala (. Phtml). Frá útlitinu við útdrátt svo að skoða hlutinn (sem við setjum okkar gögn komi fram) og gildir svipað skipulag.

Næsta sem við skipulag á skoða mótmæla með tilvísun í sjálfgefna Zend_View framreiðslu. Skoða framreiðslu eru sett af fleiri þægindi virkni. Til dæmis, að skrifa út fljóta í peninga snið, eða búa til zebra Striped töflu (þeir sem lesa má um hér ). Með því að lengja Zend_View_Helper_Abstract og bæta eigin bókasafninu þínu á þessum tímapunkti hægt til þess að nota eigin umsókn skoða framreiðslu þína.

The hvíla af the umsókn númerið er nú vafið í að prófa {} ná {} blokk. Ætti ekkert að kasta á Eftirstöðvar undantekningu að við getum skilið það og sýna gott villu skilaboð til the endir notandi.

Fyrsta verk okkar innan try {} ná {} er til leið beiðni okkar, hvað þýðir að notandinn vill sjá? Hér ég hef innleitt mjög einföld sýning kóða þar sem ég skoða gildi 'síðu' fá breytu. Your venja getur verið mjög mikið flóknari. Venja er notað til að kalla það alltaf númer þarf að framkvæma til að fá / vinna gögn sem notendur og að segja að kerfi hvað útsýni (og hugsanlega skipulag handrit) til að nota.

Endanum ef leið okkar ekki neina síðu sem hann setur 404 svar númer og birtir í fallegu síðu fannst ekki skilaboð til the endir notandi. Hér kasta við og veiða eigin undantekning okkar (og mjög almenna undantekning á því) en sennilega þú vilt að henda eigin undantekning frá innan við leið númer.

Þegar við höfum tekist flutt beiðni okkar að við getum byrjað að gera eitthvað við númerið. Það gæti verið að þú hafir átt stýringar þinn / módel framkvæmda eða þú látir nokkur númer sem þegar hefur verið skilið nokkuð. Hér set ég nokkur einföld breytur til að skoða hlutinn.

Þegar þessu er lokið við að gera einfaldlega skoðunum við gögn okkar. Ef kóðinn kastar að Eftirstöðvar undantekningu fyrir hvaða ástæðu þetta er fastur neðarlega í handriti. Hér við skýr þegar biðminni framleiðsla, setja í 500 svar haus og segja umsókn okkar til að láta skoða handrit á 'villa' (sem er yfirleitt mikið færðu niður útgáfu af venjulegum skipulag / skoða og logs villuna til að hafa eftirlit síðar).

Eins og útsýni er innt af hendi fyrst og sprautað inn í skipulag sem það er hægt að breyta útlitinu innan þeirrar skoðunar, og örugglega setja þarf aukahlutir, td

  • Page titill
  • Meta merkingar
  • Scripts (vefslóðir eða kóða) í <head> kafla
  • Bæta við fleiri stíll, etc

Auk þess jafnvel hægt að breyta öllu útliti frá innan skoða með því að nota ...

  skipulag () <PHP $ this-?> -> setLayout ('alternativeLayout')>? 

... Eins og þegar þörf krefur.

Loksins ...

Ég vona að þetta hafi verið gagnleg kynning á Zend_Layout og Zend_View og það mun gera þér kleift að hefja framkvæmd eigin undirstöðu MVC og bæta maintainibility / Extensibility af kóða þinn. Vinsamlegast kíkið á kóðinn fyrir dæmi um notkun (sjá README skrá leiðbeiningar).

Kóðinn er gert ráð fyrir að þú hafir þegar fengið autoloading vinna (eða þú hefur ma krafist flokkum). Að auki myndi ég ekki mæla með því að innleiða vegvísun eða gögn stillingu og að ofan, þetta er mjög mikið einfaldað fyrir mótmælum. Til að skoða fulla kóða kíkja á kóðann sem tengd er efst á þessari grein.

Zend Framework Version: 1.10.6

Einn Svar til "Naked Zend_Layout og Zend_View"

  1. Andy segir:

    Vel skrifuð og mest upplýsandi, takk!

Leave a Reply













Panorama Þema eftir Themocracy

6 gestir inni nú
4 gestir, 2 Botswana, 0 meðlimir
Max gestir í dag: 23 kl 04:19 UTC
Þessi mánuður: 26 kl 2011/07/05 12:35 UTC
Á þessu ári: 130 kl 28-03-2011 22:40 UTC
Allra tíma: 130 kl 28-03-2011 10:40 UTC