Alasti Zend_Layout ja Zend_View

Autor Steven Lloyd Watkin , teisipäev 10. august 2010 23:47

Käesolevas artiklis ma pilk kasutades Zend_Layout ja Zend_View koos lihtsa ees töötleja näitavad, kuidas see on võimalik alustada eraldades äriloogika ja esitlemise jooksul oma taotlus. Kõik kood on saadaval github:
Alasti Zend_Layout ja Zend_View kohta github .

MVC

Ühise disain muster kaasaegse veebirakendusi on MVC muster. Zend Framework in 'terve paki "režiim on üks rakendamise MVC on PHP ja koosneb kolmest osast:

  • Model (M)
  • Vaata (V)
  • Controller (C)

Muster on konstrueeritud nii, et äri-ja esitusviisi loogika on täiesti üksteisest eraldatud (koos äriloogika mudel, ega esitusviisi view) ja vastutava töötleja istub keskel läbi "orkester".

Esitlus ja Logic

In Zend Framework arvates tegeleb kahte põhikomponenti: Zend_View ja Zend_Layout. Zend_Layout nagu nimigi ütleb hoolitseb paigutus aspekti koha (üldiselt päised, jalused sidebars jne). Zend_View keskendutakse esitades andmed, et teie mudel on töötanud toota või tuletada.

Nagu arendajad ning nende rakenduste arenema kaldume liikuda erinevates etappides, üldiselt iga edasiminek eelmise, parandades hoolduse ja venivusega. Üks peamisi küsimusi on, et esitluse ja loogika ikka intermingled ja tema ei ole lihtne alustada eraldades kaks.

Mis viga segamine kaks?

Ostrich Seal on mitmeid põhjuseid, miks segatakse eri osade kohaldamise, näiteks projekteerija töö saidil ei taha (või on teadmata), mis kulub umbes koodi püüab töötada välja vajaduse teha esitluse muutusi. Samamoodi arendaja (kui sa oled nagu mina, kes on disaini oskuste jaanalind) võib murda läbi külma higi, kui räägitakse disaini või UI tööd.

Lisaks Mis siis, kui hiljem soovid esitada oma kohtadelt erinevaid meediakanaleid, näiteks mobiiltelefonid, tahvelarvuteid, ega paljastada andmeid via web teenused (XML / JSON / etc)? Võttes segatud esitlemist ja loogika sa seisad peaaegu mingit lootust ilma mõned väga inetu hacks vedama esitlus tagasi välja oma koodi, enne süstimist midagi uut. Kui andmed ja esitamine on eraldatud muutes need muutused on peaaegu triviaalne, luua uue vaate skripti uue formaadi ja otsesel palvel vastavalt vajadusele.

Eraldamine kahe

Arenevas taotluse oma mitte alati ökonoomne alustada nende rakendamist täieliku MVC lahendus ning taotlus tuleb rännanud aeglaselt - mõnikord töötab vana kood paralleelselt uut. See võib-olla, et on olemas massid loogika (näiteks andmebaasi ühendust setup, autentimine, küpsiste jne), mis ei ole valmis vormimiseks Teie poolt valitud raamistike setup, seega vana ja tuntud-to-be-töö-koodi, võib jätkuvalt kasutatakse seni, kuni see saab väljendada / refactored.

Märkus: Kasutades Zend_Layout ja Zend_View meeldib see on täiesti vastuvõetav jooksul Zend Framework maastiku ja raamistik on loodud selliselt, et üksikuid komponente saab kasutada ilma ülejäänud raamistik. Suur eelis arenevad rakendused ja ilmselt üks peamisi põhjuseid oma kõrge omastamine ettevõtte kohta.

Front Controller

Allpool ma loon ees kontroller - ühe faili, mille eesmärk on kiirenemist tahes taotlused, mis ei ole vastavuses faili file-süsteemi. See on sageli saavutatud kasutades. Htaccess faili nagu üks kasutatud default Zend Framework install. Jooksul ees töötleja räägin loomist meie paigutuse ja vaadata ja näitab, kus eri osade kohaldamiseks slip ta.

 define ('APP_PATH "dirname (__FILE__).'/..'); / / Start puhverdusvõime väljund ob_start (); / / Loo Zend_View näiteks Zend_Layout: startMvc (); $ paigutus = Zend_Layout: getMvcInstance (); $ mikrolülituse> setLayoutPath (APP_PATH. "/ küljendus / scripts") -> setViewSuffix ("phtml") -> setLayout ("Register"); $ vaadata = $ mikrolülituse> getView () -> setScriptPath (APP_PATH. "/ Vaata / scripts ") -> addHelperPath (APP_PATH." / library / Zend / View / Helper "," Zend_View_Helper '); / / Set Base URL - ok * peaaegu * alasti, kuid sa ei pea seda!  Zend_Controller_Front: getInstance () -> setBaseUrl ($ _SERVER ['HTTP_HOST']); try {/ ** * Sooritage mõned taotluse marsruutimise ...  * - Võiks kasutada seda kui esimesed töötleja ja suunates kõik taotlused * läbi selle ühe faili (kui faili ei eksisteeri failisüsteemis * - Märkus meetod allpool on tegelikult vaid demonstratsiooni, oleks * jube suure sait * / switch ($ _GET ['leht']) {case 'index': juhul "erand": $ pageName = $ _GET ['leht']; break; default: $ pageName = false; break;} / / Näide lehekülg ei ole leitud ... if (false === $ pageName) {$ responseHeader = 'HTTP/1.1 404 lehekülje ei leitud'; viska uus Exception ("Lehekülge ei leitud ');} / ** * Lisa andmeid oma Arvestades objekti siia * Sul võib olla oma kontroller rakendamist või osa sisaldab failid * kui äriloogika on osaliselt eraldatud arvates loogika * / $ view-> displayText = 'Tere Lloyd', $ view-> buttonText = "I \ 'm ei ole aktiivne! ', $ kujundus-> content = $ view-> muuda ("{$ pageName}. phtml"); echo $ kujundus-> muuda ();} catch (Exception $ e) {/ / Clean välja juba puhverdatud sisu - me ei taha näidata, et! ob_clean (); if (! isset ($ responseHeader)) {$ responseHeader = 'HTTP/1.1 500 Internal Server Error ";} header ($ responseHeader), $ view-> erand = $ e; $ kujundus-> content = $ view-> muuda ("error.phtml '); echo $ kujundus-> muuda ();} 

Esiteks alustame väljundi puhverdamine, seda teed me seame oma päised tahes punktist taotluse ja tean, et on võimalik saata. Kui erandit visatakse igal etapil koodi käivitamist me puhas Seda puhvrit ja kirjutada või veateate sisu ja kujundus. See tagab, et me ei paku osa sulatatud sisu sisaldab vigu lõppkasutajale.

Järgmine uus MVC astme Zend_Layout on tekitatud ja me ütleme seda, et läbi paigutus skriptid on laiendiga phtml, tuleb leida kataloog väljaspool riigi tee ja et meie Vaikepaigutuse nimetatakse indeks (. Phtml). Alates paigutus me siis väljavõte arvates objekti (mille seadsime meie andmed on esitatud) ja kohaldada sarnaseid setup.

Edasi setup arvates objekti viide default Zend_View abistajat. Vaata abilised on komplekti lisamugavusi funktsionaalsust. Näiteks, kirjutades välja Ujuk rahapoliitika formaadis või luua sebra triibuline tabel (neid saab lugeda siin ). Laiendades Zend_View_Helper_Abstract ja lisada oma raamatukogu siinkohal oleks võimalik kasutada oma taotluse vaadata abistajat.

Ülejäänud taotluse kood on nüüd pakitud try {} saak {} blokk. Kui midagi visata uncaught erand me ei saagi seda ja kuva kena veateate lõppkasutajale.

Meie esimene ülesanne jooksul try {} saak {} on tee meie taotlus, mida see kasutaja tahame näha? Siin ma olen rakendanud mõned väga lihtsad tutvustamistegevuse kood, kus ma kontrollin väärtus "lehe" saada muutuja. Sinu suunamises võib olla väga palju keerulisem. Marsruut kasutatakse kõne, mida kunagi kood tuleb täita, et saada / käepide esitatud andmete kasutaja ja öelda süsteem, mida vaadata (ja võimalik paigutus script) kasutada.

Lõpuks, kui meie ruuter ei sobi ühegi leheküljel see seab 404-vastus koodi ning kuvab kena lehekülge ei leitud sõnum lõpptarbijani. Siin visata ja püüda oma erand (ja väga üldine erand tol), kuid ilmselt sa tahaks olla viskamine oma erand jooksul ruuter koodi.

Kui oleme edukalt suunatakse meie taotlust saame hakata tegema midagi koodi. Võib olla, et teil on oma revidentidele / mudelid rakendatud või teil lisada natuke koodi, mis on juba eraldatud pisut. Siin seadsin mõned lihtsad muutujad arvates objekti.

Kui see on lõpetatud me lihtsalt muuta vaateid meie andmeid. Kui koodi viskab uncaught arvatud mingil põhjusel on see lõksu allosas skripti. Siin me selge juba puhverdatud toodangut, määrata 500 vastust päis ja ütle meie taotlus, et muuta "viga" Arvestades script (mis tavaliselt on palju lihtsustatud versiooni normaalne kujundus / view ja palgid viga kontrollimiseks hiljem).

Kuna vaade on sulatatud esimene ja pritsitakse paigutus on võimalik muuta paigutus seestpoolt vaadata, ja tõepoolest, mis on vajalikud lisad, nt

  • Lehekülje pealkiri
  • Meta tags
  • Scripts (URL või kood) arvesse <head>
  • Lisa täiendavat stiile jne

Lisaks selle isegi võimalik muuta kogu kujundus seestpoolt vaadata, kasutades ...

  <? Php $ this-> Paigutus () -> setLayout ("alternativeLayout")?> 

... Ning kui vaja.

Lõpuks ...

Loodan, et see on kasulik sissejuhatuses Zend_Layout ja Zend_View ja see võimaldab teil alustada nende rakendamist oma põhilised MVC ja parandada maintainibility / venivusega oma kood. Palun heida pilk lähtekoodi näidete kasutamine (vt README faili juhiseid).

Kood eeldab, et olete juba saanud autoloading tööpäeva (või olete lisanud nõutavad klassid). Lisaks ma ei soovitaks, et te rakendada marsruudi või andmed, milles nagu eespool mainitud, on väga lihtsustatud demonstreerimiseks. Et näha täielikku kood heita pilk lähtekoodi seotud ülaosas see artikkel.

Zend Framework: 1.10.6

One Response to "Naked Zend_Layout ja Zend_View"

  1. Andy ütleb:

    Hästi kirjutatud ja kõige informatiivsem, aitäh!

Jäta vastus













Panorama Theme poolt Themocracy

4 külastajaid online praegu
2 külalist, 2 eest, 0 liiget
Max Külastusi täna: 11 kell 04:12 UTC
Selle kuu: 22 kell 2011/08/06 12:30 UTC
Sel aastal: 130 at 28-03-2011 22:40 UTC
Kogu aeg: 130 at 28-03-2011 10:40 UTC