Naked Zend_Layout ja Zend_View
Tässä artikkelissa tarkastellaan käyttäen Zend_Layout ja Zend_View sekä yksinkertainen edessä ohjain näyttää, kuinka se on mahdollista aloittaa erottamalla liiketoiminnan logiikkaa ja esittäminen ohjelmassa. Kaikki koodi on saatavilla GitHub:
Naked Zend_Layout ja Zend_View GitHub .
MVC
Yhteinen suunnittelu malli nykyaikaisten web-sovelluksia on MVC malli. Zend Framework on "täysi pino-tilassa on yksi täytäntöönpanon MVC on PHP ja koostuu kolmesta osasta:
- Malli (M)
- Näytä (V)
- Controller (C)
Malli on suunniteltu siten, että liike ja esityksen logiikka ovat täysin erillään toisistaan (kanssa Liiketoimintalogiikan malli, ja esitys katsottuna) ja ohjain istuu keskellä suorittaa "orkesteri".
Esittely ja Logic
Vuonna Zend Framework mielestä hoitaa kaksi pääosaa: Zend_View ja Zend_Layout. Zend_Layout kuten nimestä voi päätellä huolehtii layout osa sivuston (yleensä ylä-ja alatunnisteet sidebars, jne). Zend_View keskittyy esitetään tiedot, että malli on työskennellyt tuottaa tai saada.
Kehittäjinä, ja niiden sovelluksia, kehittyä meillä on tapana liikkua eri vaiheissa, yleensä jokainen parannus edelliseen, parantaa huollettavuutta ja laajennettavuutta. Yksi tärkeimmistä kysymyksistä on, että esitys ja logiikka silti sekoittuneet ja se ei ole helppo aloittaa erotettu toisistaan.
Mitä vikaa sekoittamista?
On useita syitä, miksi sekoittamalla eri osien soveltamista, esimerkiksi suunnittelijan työ sivustossa ei välttämättä kannata (tai tietoa) skannata ympäri koodi yrittää selvittää missä tehdä esitys muutoksia. Samoin kehittäjä (jos et pidä minusta, joka on suunnittelun taitoja strutsi) voivat puhjeta ja kylmä hiki, kun mainita suunnittelu tai käyttöliittymän työtä.
Lisäksi mitä jos myöhemmin haluat esittää sivustosi eri tiedotusvälineissä, kuten matkapuhelinten, Tablet PC, tai altista dataa web-palvelut (XML / JSON / etc)? Ottaa sekoitettu esitys ja logiikka seisot lähes olematon ilman erittäin ruma hakata vetää esitys takaisin ulos koodin, ennen pistämistä jotain uutta. Jos tiedot ja esitys on erotettu tehdä nämä muutokset ovat lähes triviaaleja, luoda uuden näkymän käsikirjoituksen uuteen muotoon ja suoraan pyytää tarvittaessa.
Erotettu toisistaan
Vuonna kehittyvä hakemus sen ei aina kannattavaa alkaa toteuttaa täysin MVC ratkaisu ja sovellus on siirtynyt hitaasti - joskus käytössä vanha koodi rinnalla uusia. Se ehkä, että on olemassa valtavasti logiikka (kuten tietokantayhteyden asetukset, todennus, evästekäsittelyn, jne.), jotka eivät ole valmiita laudaksi valitsemasi kehysten asennus, siis vanha ja tunnettu-to-be-työkoodia voidaan jatkaa käytetään, kunnes se voidaan kirjoittaa / refactored.
Huomautus: Käyttämällä Zend_Layout ja Zend_View kuten tämä on täysin hyväksyttävissä Zend Framework maisema ja puitteet on suunniteltu siten, että yksittäiset osat voidaan käyttää ilman muuta kehyksen. Suuri etu kehittyy sovelluksia ja todennäköisesti yksi tärkeimmistä syistä sen korkean käyttöönottoa kaupallisiin sovelluksiin.
Front Controller
Alla luon edessä ohjain - yhden tiedoston tarkoitus poimia pyyntöihin, jotka eivät ole sovitettu tiedoston tiedosto-järjestelmässä. Tämä on usein saavutetaan käyttämällä. Htaccess-tiedoston, kuten käytettyä oletuksena Zend Framework asentaa. Sisällä edessä valvoja aion perustaa taiton ja katsella ja näyttää missä eri osien soveltamista sujauttaa sen.
define ('APP_PATH ", dirname (__FILE__).'/..'); / / Start puskuroinnin lähtö ob_start (); / / Luo Zend_View esimerkiksi Zend_Layout: startMvc (); $ Layout = Zend_Layout: getMvcInstance (); $ Layout-> setLayoutPath (APP_PATH. "/ Layout / scripts") -> SetViewSuffix (phtml) -> SetLayout (indeksi); $ View = $ layout-> getView () -> SetScriptPath (APP_PATH. "/ View / scripts") -> AddHelperPath (APP_PATH. "/ Kirjasto / Zend / Näkymä / Helper", "Zend_View_Helper"); / / Aseta Base URL - ok * melkein * alasti, mutta et tarvitse tätä! Zend_Controller_Front: getInstance () -> setBaseUrl ($ _SERVER ['HTTP_HOST']); try { / ** * Tee jokin sovellus reititys ... * - Saattavat käyttää tätä edessä ohjain ja ohjata kaikki pyynnöt * Kautta tämä tiedosto (jos tiedostoa ei ole olemassa tiedostojärjestelmää * - Huomautus menetelmä alla on vain todella esittelyä, se olisi * Kamala suuri sivusto * / kytkin ($ _GET ['sivu']) { Jos "indeksi": Jos "poikkeus": $ Pagename = $ _GET ['sivu']; break; default: $ Pagename = false; break; } / / Esimerkki sivua ei löytynyt ... if (false === $ pagename) { $ ResponseHeader = "HTTP/1.1 404 Page Not Found"; throw new Exception ("Sivua ei löydy"); } / ** * Lisää tietoa mielestänne vastustaa täällä * Voit olla oma ohjain täytäntöönpanon tai joidenkin sisältää tiedostoja * Jos ansaintalogiikka on osittain erotettu mieltä logiikka * / $ View-> displayText = 'Hei Lloyd "; $ View-> buttonText = "I \ 'm ole aktiivinen!'; $ Layout-> content = $ View-> tehdä ("{$ pagename}. Phtml"); echo $ layout-> tehdä (); } Catch (Exception $ e) { / / Puhdista jo puskuroidut sisältöä - emme halua näyttää sitä! ob_clean (); if (! isset ($ responseHeader)) { $ ResponseHeader = "HTTP/1.1 500 Internal Server Error"; } header ($ responseHeader); $ View-> poikkeus = $ e; $ Layout-> content = $ View-> tehdä (error.phtml "); echo $ layout-> tehdä (); }
Ensin alkaa tulostuksenhallintafunktioita, niin tekemällä voimme asettaa meidän otsikot tahansa pyynnön ja tiedän, että se on mahdollista lähettää. Jos poikkeus heitetään missään vaiheessa koodin suorittamisen olemme puhtaita tämä puskuri ja kirjoittaa tai virheilmoituksen sisältöä ja ulkoasua. Näin varmistetaan, että emme toimittaa osa muodostettu sisältö sisältää virheitä loppukäyttäjälle.
Seuraava uusi MVC esiintymä Zend_Layout syntyy ja me kerromme sen, että ulos layout skriptit ovat laajennus phtml, ovat löytyvät hakemistosta ulkopuolella julkinen polku, ja että meidän oletusasettelun kutsutaan indeksi (. Phtml). Valitse layout me pura mielestä objekti (jonka asetimme tiedot esitetään) ja soveltaa samankaltaisia asetukset.
Seuraavaksi asennusohjelma mieltä objekti viitaten oletuksena Zend_View auttajia. Näytä avustajat ovat sarjaa lisämukavuutta toimintoja. Esimerkiksi kirjoittamisen float raha-muodossa, tai luoda seepra raidallinen taulukko (ne voi lukea täältä ). Laajentamalla Zend_View_Helper_Abstract ja lisäämällä oman kirjaston tässä vaiheessa sen voi käyttää omaa hakemus mieltä auttajia.
Muilta osin koodi on nyt kääritty try {} catch {} lohko. Jos jotain heittää uncaught poikkeus voimme sen kiinni ja näyttää mukava virheilmoitus loppukäyttäjälle.
Ensimmäinen tehtävämme sisällä try {} catch {} on reitti omasta pyynnöstä, mitä käyttäjä haluaa nähdä? Täällä olen toteuttanut joitakin hyvin yksinkertaisia esittely-koodi, jossa olin tarkistaa arvo "sivun päästä muuttuja. Sinun reititys voi olla hyvin paljon monimutkaisempi. Reititys on tapana kutsua mitä ikinä koodi on suoritettu saada / käsitellä tietoja käyttäjän ja kertoa järjestelmälle, mitä mieltä (ja mahdollisesti layout script) käyttöön.
Lopulta jos meidän reititin ei vastaa yhtään sivua siinä 404 vastausta koodin ja näyttää mukava sivua ei löydy viestin loppukäyttäjälle. Täällä me heittää ja saalis oman poikkeus (ja erittäin yleinen poikkeus tuohon), mutta ehkä haluat olla heittää oma poikkeus sisällä reitittimen koodiin.
Kun olemme menestyksellisesti ohjata meidän pyynnöstä voimme alkaa tehdä jotain koodia. Voi olla, että sinulla on oma valvojien / malleja toteutetaan tai kirjoitat koodia, joka on jo erotettu hieman. Tässä otan pari yksinkertaista muuttujien tarkastella objektia.
Kun tämä on valmis emme yksinkertaisesti tee näkemysten tietomme. Jos koodi heittää uncaught poikkeus jostain syystä tämä on jäänyt alalaidasta käsikirjoituksen. Täällä selvästi jo puskuroitu ulostulo asettaa 500 vastausta otsikkoa ja kerro meille hakemus tehdä "virhe" mielestä käsikirjoitus (joka on yleensä paljon riisuttu versio normaalin asettelun / view ja lokit virhe tarkkailun myöhemmin).
Koska näkymä on sulatettu ensimmäinen ja ruiskutetaan layout on mahdollista muuttaa asettelua sisällä ja itse asiassa asettaa tarvittavat erikoisvarusteet, esim.
- Sivun otsikko
- Sisällönkuvauskentät
- Scripts (URL tai koodi) osaksi <head> osa
- Lisää muita tyylejä jne.
Lisäksi se edes mahdollista muuttaa koko ulkoasua sisällä näkemyksesi käyttäen ...
<? Php $ this-> layout () -> setLayout (alternativeLayout)?> ... Ja kun tarvitaan.
Lopuksi ...
Toivon, että tämä on hyödyllinen johdatus Zend_Layout ja Zend_View ja sen avulla voit lähteä toteuttamaan omaa perustiedot MVC ja parantaa maintainibility / laajentuma koodistasi. Ole hyvä ja vilkaise lähdekoodin esimerkkejä käytöstä (katso README tiedosto ohjeet).
Koodi oletetaan, että olet jo saanut automaattista työ (tai olet mukana tarvittavat luokat). Lisäksi en suosittele, että käytät reititystä tai tietojen asettamiseen kuten edellä, tämä on hyvin yksinkertaistettu esittelyä. Jos haluat nähdä koko koodi katsomaan lähdekoodia liittyvät yläosassa tämän artikkelin.
Zend Framework: 1.10.6


















































Hyvin kirjoitettu ja kaikkein informatiivinen, kiitos!