Smarty

Screenshot Software:
Smarty
Mga detalye ng Software:
Bersyon: 3.1.5
I-upload ang petsa: 11 May 15
Lisensya: Libre
Katanyagan: 1

Rating: nan/5 (Total Votes: 0)

Smarty ay hindi talaga isang "Template Engine", ito ay magiging mas tumpak na inilarawan bilang isang "Template / Framework Presentation." Iyon ay, ito ay nagbibigay ng mga programmer at template designer na may isang kayamanan ng mga kasangkapan upang automate gawain na karaniwang dealt sa layer pagtatanghal ng isang application. Stress ko ang salitang Framework dahil Smarty ay hindi isang simpleng tag-pagpapalit ng template engine. Kahit na ito ay ginagamit para sa mga tulad ng isang simpleng layunin, pagtutok nito ay sa mabilis at walang sakit na pag-unlad at paglawak ng iyong application, habang ang pagpapanatili ng mataas na pagganap, kakayahang sumukat, seguridad at hinaharap na paglago.
Kaya ay Smarty tama para sa iyo? Ano ito ay dumating down sa ay ang paggamit ng karapatan na kasangkapan para sa trabaho. Kung nais mong simpleng variable kapalit, baka gusto mong tingnan ang isang bagay na mas simple o kahit na gumulong ang iyong sarili. Kung nais mo ng isang matatag na templating framework na may maraming mga kasangkapan upang tulungan ka bilang nililinang ang iyong application sa hinaharap, Smarty ay malamang na isang mahusay na pagpipilian.
Bakit gagamitin ito?
Isa Smartys layunin pangunahing disenyo ay upang mapadali ang paghihiwalay ng application code mula sa pagtatanghal. Kadalasan, ang mga application code ay naglalaman ng mga negosyo na lohika ng iyong application, nakasulat at pinananatili sa code na PHP. Ang code na ito ay pinananatili sa pamamagitan ng programmers. Ang pagtatanghal ay ang paraan na ang iyong nilalaman ay iniharap sa mga end user, na kung saan ay nakasulat at pinananatili sa file template. Ang mga template ay pinananatili sa pamamagitan ng template designer.
Sa karamihan ng mga pangunahing tungkulin nito, nangongolekta ng mga application code ng nilalaman, ito ay nagtatalaga sa template engine at nagpapakita ito. Maaaring maging isang bagay na tulad ng headline, tagline, may-akda at katawan ng isang artikulo sa pahayagan Ang nilalaman. Ang application code ay walang pag-aalala kung paano ang nilalaman na ito ay iniharap sa template. Ang template designer ay responsable para sa pagtatanghal. Sila edit ang template file, ang pagdaragdag ng markup at nagdadala ito sa pagkumpleto. Ito ay karaniwang nagsasangkot ng mga bagay na tulad ng mga tag na HTML, cascading style sheet at iba pang mga tool na ibinigay sa pamamagitan ng mga template engine.
Tularan na ito ay nagsisilbing ilang mga layunin:
) Ay hindi maaaring basagin designer application code. Maaari silang gulo sa mga template ng lahat ng gusto nila, pero ang code ay mananatiling buo. Ang code na ito ay tighter, mas ligtas at mas madali para mapanatili.
) Mga error sa mga template ay nakakulong sa Smartys error sa paghawak ng mga gawain, ang paggawa ng mga ito bilang simple at madaling maunawaan hangga't maaari para sa designer.
) Sa pagtatanghal sa kanyang sariling layer, designer ay maaaring baguhin o ganap na muling idisenyo ito mula sa simula, ang lahat nang walang panghihimasok mula sa mga programmer.
) Programmers ay hindi messing sa mga template. Maaari silang pumunta tungkol sa pagpapanatili ng application code, ang pagbabago ng paraan ng nilalaman ay nakuha, ang paggawa ng bagong mga patakaran ng negosyo, atbp walang kita ang pagtatanghal layer.
) Template ay isang malapit na representasyon ng kung ano ang pangwakas na output ay, kung saan ay isang intuitive diskarte. Designer hindi pag-aalaga kung nakuha na ang mga template ng nilalaman. Kung ikaw ay may labis na data sa mga template tulad ng isang SQL na pahayag, ito ay bubukas ang panganib ng paglabag application code sa pamamagitan ng aksidenteng pagbura o pagbabago ng disenyo.
) Hindi ka pagbukas ng iyong server sa pagpapatupad ng arbitrary code na PHP. Smarty ay may maraming mga tampok ng seguridad na binuo sa gayon designer ay hindi paglabag ng seguridad, kung sadya o aksidenteng. Sila ay maaari lamang gawin kung ano ang mga ito ay nakakulong sa sa mga template.
Kahit application code ay pinaghihiwalay mula sa pagtatanghal, ito ay hindi palaging nangangahulugan na lohika ay separated. Ang application code malinaw naman ay may lohika, ngunit maaaring may lohika ang mga template batay sa mga kondisyon na ito ay para sa mga pagtatanghal lamang. Halimbawa, kung ang taga-disenyo ay nagnanais na kahaliling kulay hilera ng talahanayan o upper-case ilang itinalaga ng nilalaman, maaari nilang. Ito ay pagtatanghal na lohika, isang bagay na ang mga programmer ay hindi dapat na nababahala sa. Gaano kadalas ikaw ay nagkaroon ng ilang mga pagtatanghal na ipinapakita sa isang solong hanay at pagkatapos ay nais mong ito sa dalawa o tatlong mga haligi, kaya ang mga pangangailangan ng mga application code ng pagsasaayos upang mapaunlakan ito? Ang isang mas mahusay na diskarte ay upang italaga ang mga nilalaman sa isang solong array at ipaalam sa panghawakan ang mga template ng pagtatanghal. Ito ay gawing simple ang inyong aplikasyon at panatilihin flexible ang iyong mga template. Smarty supplies ang mga kasangkapan upang hawakan ang uri ng mga sitwasyon.
Ito ay hindi nangangahulugan na pumipigil sa iyo Smarty mula sa paglagay aplikasyon lohika sa template, kailangan mong magkaroon ng isang piraso ng disiplina sa sarili. Narito ang isang halimbawa ng pag-embed ng mga negosyo na lohika sa template (na karapatan, maiwasan ang paggawa nito kung posible):
{Kung $ smarty.session.user at ($ user_type eq "editor" o $ user_type eq "admin")}
i-edit
{/ Kung}
Ang lohika tseke kung ang gumagamit ay naka-log in at ito ay alinman sa isang editor o administrator, at pagkatapos ay pinahihintulutan nilang i-edit ito upang ang checkbox edit nagpapakita up. Iyon ay ang lohika na nabibilang sa application code. Ang template ay hindi aalaga tungkol sa kung ano ang credentials ang user na ito ay, ito lamang ang pangangailangan na malaman kung ang edit box ay ipinapakita o hindi! Kaya sabihin tumingin sa isang mas angkop na diskarte ipaalam:
{Kung $ edit_flag}
i-edit
{/ Kung}
Ito ay hanggang sa ang mga programmer application upang magtalaga ng $ edit_flag, isang simple at madaling-maintindihan variable sa template. Sa ganitong paraan ang mga template ay hindi na umaasa sa iyong mga pangunahing istraktura ng data. Kung ang mga format ng mga istraktura ng data ng session ba ang mga pagbabago, wala kailangang nababagay sa template.
Hinahayaan Ngayon tingnan natin ang ilang mga bagay na maaari mong gawin sa mga Smarty. Isang bagay na maaaring gawin ito ay pasadyang pag-andar. Ang mga ito ay mga tag sa template na magsagawa ng isang tiyak na gawain. Halimbawa:
{Html_image file = "masthead.gif"}
Narito kami ay may isang function na tinatawag na "html_image". Ang function na ito ay tumatagal ng mga imahe na ibinigay sa attribute "file" at ang lahat ng mga trabaho na kinakailangan upang magkaroon ng mga sumusunod na HTML code:

Ginawa ng mga function na ang imahe ng gawaing-bahay ng pagtukoy sa taas at lapad at supplying ang bandila default border. Syempre maaari mo lamang gamitin ang mga static HTML na tag sa halip na ang template, ngunit ito ay nagpapakita kung paano maaaring gamitin ang isang pasadyang function upang gawing simple ang isang napaka-pangkaraniwang gawain. Ang disenyo ay maaaring tumutok sa mga disenyo at mas mababa sa mga teknikal na bagay-bagay. Bukod dito, kung nagpasiya ang designer sa drop sa isang iba't ibang image size masthead, ang mga template ay hindi kailangan na pag-aayos.
html_image ay isang function na nanggagaling sa Smarty. Maaari ka ring gumawa ng iyong sariling pasadyang mga function. Narito ang isa pang halimbawa ng kung ano ang maaaring hitsura ng isang tulad ng:
{Type html_link = id = text "article" "abc123" = "Fire tumatagal ang Hotel"}
Ito ay gumagamit ng isang pasadyang function na tinatawag na "html_link". Ito ay dumating up gamit ang sumusunod na HTML code:
Fire tumatagal ang Hotel
Ano ang magawa ito? Para sa isa, ang taga-disenyo ay hindi na kailangan upang maging nababahala sa format ng isang URL sa isang artikulo. Sa hard-code na mga URL, ano ang mangyayari kung isang araw ang mga programmer ay nagpasiya na malinis bagay up, at mga pagbabago sa syntax URL mula /display_article.php?id=abc123 to / Art / abc123? Gusto namin na i-edit ang bawat template sa isang artikulo URL. Ito ay isa pang halimbawa ng kung paano maaaring gawing mas madali ang mga template upang mapanatili ang isang function template.
Ngayon para sa isang bit sa mga programmer at mga template. Mas maaga ito ay nabanggit na ang mga programmer ay walang pag-aalaga para sa kung ano ang mga template gawin sa mga nilalaman. Sa isang haka-haka na antas na ito ay totoo, ngunit sa tunay na mundo ikaw ay hindi pagpunta sa inaasahan ang template designer upang magkaroon upang bumuo ng lahat ng mga template sa labas ng manipis na hangin. Pagkatapos ng lahat, ang mga negosyo na lohika ay matukoy kung ano ang nilalaman ay itinalaga sa mga template. Kaya, ang mga programmer ay karaniwang template balangkas setup para sa mga taga-disenyo upang magsimula sa. Ito ay karaniwang naglalaman ng mga raw na sangkap tulad ng mga variable na nilalaman at mga loop na seksyon, at marahil ng ilang simpleng mga markup tags upang hindi sila magsimula sa mga nilalaman sa isang malaking gulo. Narito ang isang halimbawa ng isang template balangkas na loops sa pamamagitan ng isang listahan ng mga artikulo at ipinapakita ang mga ito sa isang table:


{Name section = art loop = $ article}


{/ Section}
{$ artikulo [art] .headline}
{$ artikulo [art] .date}
{$ artikulo [art] .author}

Maaaring tumingin ng isang bagay tulad nito output:







Paano kanluran ay nanalo
2 Disyembre 1999
John Wayne
Team loses, Coach kapalitan
2 Pebrero 2002
John Smith
Gourmet Cooking
23 Enero 1954
Betty Crocker

Ngayon para sa ilang karaniwang mga katanungan:
Bakit gamitin ang mga template sa lahat? Ano kaya matigas tungkol sa pagsusulat ng Sa halip ng {$ title}?
Paggawa ng mas madali upang basahin ang mga bagay ay hindi isang layunin sa disenyo, ngunit higit pa sa isang side effect. Paggamit ng mga template ay may malaking benepisyo, na marami nito ay ipinaliwanag sa itaas. Dahil kami ay sa isang template na kapaligiran anyways, {$ title} ay mas mababa mula sa labas sa , Lalo na kapag binuksan mo ang pagtingin sa mga ito sa mahabang mga pahina ng nilalaman, sa gayon ito ay medyo maliwanag na ang isang mas simpleng syntax ay tumutulong na gawing mas madali ang mga template na basahin at panatilihin.
Template tumagal ng oras upang i-parse, ang paggawa ng mga aplikasyon ng marami mabagal.
Na maaaring totoo sa ilang mga kaso, ngunit may Smarty ito ay walang mas mabagal kaysa sa Isinasagawa ang isang script PHP. Sa unang pagpapatupad ng isang template, nagpalit Smarty template file sa PHP script (na tinatawag na template ipon.) Pagkatapos noon, ang script PHP ay kasama lamang. Ilang ito sa isang PHP accelerator at ikaw ay tunay na magkaroon ng isang mabilis templating kapaligiran na may minimal overhead.
Smarty ay masyadong kumplikado, kung paano ito ay maaaring maging mabilis na?
Core Smarty ay medyo lean-alang kung ano ito ay may kakayahang. Karamihan ng pag-andar nito ay namamalagi sa mga plugin. Ang arkitektura plugin ay dinisenyo upang lamang ang mga kinakailangang mga plugin ay load on demand. Sa balangkas na ito, ang pagdaragdag kahit daan-daang mga bagong plugins ay hindi makakaapekto sa pagganap. Ito ay gumagawa ng Smarty mabilis, scalable at nababaluktot.
Smarty mayroon ding mga tampok caching na maaari dynamically-refresh at panatilihin ang mga bahagi ng mga pahina ng uncached sa iyong kagustuhan. Tindahan ng Caching ang output ng naipon na mga template, na-save ang mga kailangan upang isakatuparan ang mga ito sa bawat isa sa pananalangin.
Lahat ng ito makipag-usap tungkol sa accelerators, paano Smarty tumakbo nang walang isa?
Tunay na ito ay nagpapatakbo ng medyo maayos na walang isa. Smarty ay hindi nangangailangan ng isang accelerator, ngunit ang mga file ng template ay ang kanilang sarili samantalahin ang isa, isang bagay na ay natatangi sa Smarty (AFAIK). Kung hindi ka magkaroon ng isang accelerator, pagpapatupad template ay hindi bilang mabilis pero dahil sila ay hindi na-parse na hindi mabagal sa anumang paraan! Panatilihin mo rin ang lahat ng mga iba pang mga benepisyo at mga katangian ng Smarty. Gayundin, dahil accelerators ay malayang magagamit diyan ay hindi tunay ng dahilan upang hindi gumagamit ng isa. Ito ay makakatulong sa pagganap sa lahat ng apps PHP, gamit Smarty o hindi.
Paano ito ay mas madali para mapanatili?
Hindi maaaring ipinaliwanag sa ilang mga bagay, ngunit lamang naranasan. Ang mga benepisyo ng paghihiwalay ng lohika application mula sa pagtatanghal ay hindi maaaring stressed sapat. Smarty ay mayroon ding ilang mga nice error sa paghawak ng mga tampok at isang built-in console debugging upang maaari mong makita ang template hierarchy at itinalaga variable sa isang sulyap. Pagdaragdag ng mga pasadyang tampok sa Smarty ay kasingdali ng bumababa ang mga ito sa direktoryo plugin at pagbanggit ng mga ito sa template.
Ang mga tag template ay hindi batay XML, My editor ay hindi tulad ng mga ito.
Ang {} delimiter ay isang default na lang, sila ay madaling kumilala sa gitna ng mga tag na HTML. Kung hindi mo gusto ang mga ito, baguhin ang iyong delimiter sa o marahil isang bagay na mas XMLish tulad Mayroong maraming mga kontribusyon ng gumagamit para sa Dreamweaver at ang mga tulad din, bigyan sila ng isang pagtingin sa ambag area.
Iyan Smarty sa maikling sabi, sana ay maaari mong idagdag ito sa iyong arsenal ng mga kasangkapan para sa mga gusali web application. Upang tunay na malaman ang higit pa, basahin ang manual sa itaas sa ibaba, sumali sa forum at tingnan kung ano ang pagtalakay ng mga tao

Features .

  • Caching: Smarty nagbibigay pinong mga tampok caching para sa caching sa lahat o bahagi ng isang nai-render na web page, o umaalis bahagi uncached. Programmers ay maaaring magrehistro function template bilang naka-cache o non-cachable, mga pahina na naka-cache na grupo sa lohikal na yunit para sa mas madali pangangasiwa, etc.
  • Configuration Files: maaaring magtalaga Smarty variable hinila mula sa mga file ng configuration. Designer Template ay maaaring mapanatili ang mga halaga karaniwang sa ilang mga template sa isang lokasyon nang walang interbensyon mula sa mga programmer, at mga variable config ay madaling ma-share sa pagitan ng mga programa at pagtatanghal ang mga bahagi ng application.
  • Security: Template ay hindi naglalaman ng code na PHP. Samakatuwid, ang isang template designer ay hindi na pinakawalan sa buong kapangyarihan ng PHP, ngunit lamang ang mga subset ng mga pag-andar na ginawang magagamit sa kanila mula sa mga programmer (application code.)
  • Madaling Gamitin at mapanatili: designer Web page ay hindi pakikitungo sa syntax ng PHP code, ngunit sa halip ng isang madaling-gamitin na templating syntax hindi marami kaysa sa payak na HTML. Ang template ay isang napaka-malapit na representasyon ng pangwakas na output, kapansin-pansing mantika ang cycle na disenyo.
  • Variable Modifiers: Ang nilalaman ng itinalaga variable ay maaaring madaling nababagay sa display-time na may modifier, tulad ng pagpapakita sa lahat ng mga upper-case, html-escaped, format petsa, pinuputol bloke ng teksto, ang pagdaragdag ng mga puwang sa pagitan character, atbp Muli , ito ay tapos na walang interbensyon mula sa mga programmer.
  • Tungkulin Template: Maraming mga function ay magagamit sa mga template designer upang mahawakan ang mga gawain tulad ng pagbuo ng mga segment ng HTML code (dropdowns, mga talahanayan, mga pop-up, atbp), na nagpapakita ng nilalaman mula sa iba pang mga template ng in-line, looping over arrays ng nilalaman , format ng teksto para sa e-mail na output, pagbibisikleta na kulay, etc.
  • Mga Filter. Programmer ay may kumpletong kontrol ng template output at naipon nilalaman template na may pre-filter, post-filter at output-filter
  • Mga Mapagkukunan:. Template ay maaaring kinuha mula sa anumang bilang ng mga pinagkukunan sa pamamagitan ng paglikha ng bagong mga humahawak ng mapagkukunan, at pagkatapos gamit ang mga ito sa mga template
  • Plugin: Halos bawat aspeto ng Smarty ay kinokontrol sa pamamagitan ng paggamit ng mga plugin. Sila ay karaniwang kasing-dali ng bumababa ang mga ito sa direktoryo ng mga plugin at pagkatapos pagbanggit sa kanila sa template or gumagamit ang mga ito sa application code. Maraming mga kontribusyon user-komunidad ay magagamit din. (Tingnan ang mga plugin sa mga forum at wiki.)
  • Add-ons: Maraming user-komunidad iniambag Add-ons ay magagamit tulad ng pagbilang ng pahina, Pagpapatunay Form, Drop Down Menu, Calander Pickers Petsa, atbp mga tool na makakatulong sa pabilisin ang development cycle, hindi na kailangan upang muling ilikha ang wheel o debug code na mayroon na matatag at handa na para sa deployment. (Tingnan ang Add-ons na seksyon ng forum at wiki.)
  • Debug. Smarty dumating na may built-in debugging console kaya maaaring makita ang mga template designer lahat ng mga itinalaga mga variable at mga programmer ay maaaring siyasatin template rendering bilis
  • pag-ipon.: Smarty compiles template sa PHP code sa likod ng mga eksena, aalis run-time sa pag-parse ng mga template
  • Pagganap: Smarty gumaganap ng lubhang mabuti, sa kabila ng kanyang malawak na hanay ng tampok. Karamihan ng mga kakayahan Smarty kasinungalingan sa mga plugin na naka-load on-demand. Smarty ay may maraming mga kasangkapan sa pagtatanghal, minimizing ang iyong application code at nagreresulta sa mas mabilis, mas mababa ang error-makiling application development / deployment. Smarty template makakuha naipon sa PHP file sa loob (isang beses), aalis mahal Sinusuri template file at leveraging ang bilis ng accelerators op-code na PHP.

Ano ang bago sa release na ito:

  • babalik pagbabago super global access, at sa halip na umasa sa USE_SUPER_GLOBALS para security

Ano ang bago sa bersyon 2.6.23:

  • strip backticks mula sa {math} equation (mohrt)
  • throw error kapag mayroon na template ngunit hindi nababasa (mohrt)

Ano ang bago sa bersyon 2.6.22:

  • release ito address ng isang problema nakatagpo sa Smarty 2.6 0.21 release at isang PCRE engine bug sa PHP 5.2. Pagdudugtong Method ay tinanggal dahil upang maiwasan ang mga bug. Pagdudugtong Method ay muling lilitaw sa Smarty 3.

Iba pang mga software developer ng New Digital Group, Inc.

Smarty
Smarty

13 Apr 15

Mga komento sa Smarty

Mga Komento hindi natagpuan
Magdagdag ng komento
I-sa mga imahe!