Inteligent

inteligent
Tip de Procesor de șabloane de compilare
Dezvoltator New Digital Group Inc.
Scris in PHP [2]
Sistem de operare Software multiplatformă
Prima editie 2001 [1]
ultima versiune
Licență GNU LGPL
Site-ul web smarty.net

Smarty este un motor de compilare de șabloane pentru PHP , unul dintre instrumentele care vă permite să separați logica aplicației și datele de prezentare în spiritul conceptului Model-view-controller .

Limbajul de șabloane Smarty extinde HTML cu etichete smarty care sunt încorporate în document. Aceste etichete pot fi variabile PHP (posibil cu modificatori, de exemplu {$variable|nl2br} ), funcții sau constructe de programare structurată de bază, cum ar fi {if …} … {else} … {/if} .

Unul dintre scopurile Smarty este de a separa logica aplicației de prezentare. Șabloanele pot conține în continuare logică, dar trebuie să fie logică de prezentare a datelor . Ar trebui să rezolve probleme precum conectarea altor șabloane, alternarea colorării rândurilor dintr-un tabel, conversia literelor în majuscule, trecerea printr-o matrice pentru a o afișa etc. Biblioteca Smarty în sine nu forțează separarea logicii aplicației și a prezentării - cea corectă disciplina folosind șabloane web este lăsată la latitudinea dezvoltatorului.

Smarty este prima bibliotecă de șabloane care utilizează un mecanism de stocare în cache a codului de octeți .

Caracteristici

Smarty vă permite să:

Pentru a facilita construirea de aplicații web scalabile, Smarty are un mecanism de stocare în cache încorporat .

Mecanism de acțiune

Smarty citește fișierele șablon și generează cod PHP pe baza acestora. Codul este creat o dată și apoi executat doar, astfel încât nu este nevoie să procesați un fișier șablon pentru fiecare solicitare și fiecare șablon poate profita din plin de extensiile de cache a codului de octeți PHP, cum ar fi eAccelerator sau PHP Accelerator . Smarty a fost probabil prima bibliotecă de șabloane care a folosit un astfel de mecanism. Mai târziu, au apărut mulți analogi, folosind atât sintaxa șablonului de tip smarty (cum ar fi Twig sau Quicky ), cât și alte abordări ale sintaxei șablonului.

Compilarea șabloanelor atinge performanțe comparabile cu șabloanele PHP scrise de mână [40] . Construcțiile if/elseif/else/endif sunt transmise handler-ului PHP, astfel încât sintaxa pentru expresia {if ...} poate fi atât de simplă sau complexă pe cât se dorește. Este posibilă imbricarea nelimitată a secțiunilor, condițiilor etc.

Exemplu de cod

Pagina HTML cu etichete Smarty:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> < html > < head > < title > {$title_text} </ title > < meta http-equiv = "content-type" content = "text/html; charset=iso-8859-1" /> </ head > < body > {* Comentariu care nu va fi în codul HTML *} < p > {$body_text} </ p > </ body > <!-- Comentariul care va fi în codul HTML --> </ html >

Logica de lucru în scriptul PHP este mai jos:

define ( 'SMARTY_DIR' , 'smarty-2.6.22/' ); require_once ( SMARTY_DIR . 'Smarty.class.php' ); $smarty = nou Smarty (); $smarty -> template_dir = './templates/' ; $smarty -> compile_dir = './templates/compile/' ; $smarty -> cache_dir = './templates/cache/' ; $smarty -> caching = false ; $smarty -> error_reporting = E_ALL ; // LĂSAȚI E_ALL ÎN TIMPUL DEZVOLTĂRII $smarty -> debugging = true ; $smarty -> assign ( 'title_text' , 'TITLE: Smarty example ...' ); $smarty -> assign ( 'body_text' , 'BODY: Acesta este textul rezultat de assign()' ); $smarty -> display ( 'index.tpl' );

Critica

Smarty (și bibliotecile bazate pe această abordare) sunt de obicei criticate din două direcții. Susținătorii utilizării unui subset de PHP ca limbaj de șablon susțin că pentru că „practic oferă o interfață pentru PHP folosind o nouă sintaxă” și, prin urmare, oferă puțin avantaj. [41] Susținătorii XSLT consideră că Smarty lasă prea mult loc pentru amestecarea logicii și prezentării, ceea ce face ca șabloanele inteligente să fie mult mai dificil de editat și reutilizat de către terți . [42] .

Analogii

Din 2008, a fost disponibil un adept al sintaxei Smarty, motorul de șabloane Quicky [43] , a cărui principală trăsătură distinctivă este o abordare diferită a implementării analizei șabloanelor (care, potrivit autorului, funcționează mult mai rapid) și o extensie a sintaxei deja familiară pentru mulți: suport pentru helpers (funcții declarate direct în șablon), prezența constantelor buclei „magice”, o sintaxă simplificată pentru alocarea de valori variabile fără a utiliza {math}, structuri de control compilabile.

O dezvoltare interesantă a ideilor Smarty este biblioteca Twig , care este dezvoltată și întreținută de Fabien Potencier, dezvoltatorul principal și ideologul Symfony [44] .

Managerii de șabloane, cum ar fi Dwoo [45] sau handlerul încorporat în eZ Publish / ezComponents o sintaxă asemănătoare smarty

Până în 2007, a fost dezvoltată și o furcă „ușoară” a Smarty - Template Lite [46] (în primele versiuni ale Smarty Light).

În 2013, a fost lansată prima versiune a motorului de șabloane Fenom [47] , care acceptă sintaxa de tip Smarty. O trăsătură distinctivă a motorului de șabloane este analiza șablonului, care are loc fără utilizarea expresiilor regulate, dar se bazează pe tokenizer încorporat [48] , ceea ce face ca analiza șablonului să fie rapidă și motorul de șabloane în sine ușor.

Note

  1. https://web.archive.org/web/20010128152400/http://www.phpinsider.com/php/code/Smarty/docs/
  2. Proiectul smarty Open Source pe Open Hub: Pagina de limbi - 2006.
  3. Lansarea 3.1.27 - 2015.
  4. Smarty 3.1.29 Lansat - 2015.
  5. Lansarea 3.1.29 - 2015.
  6. Lansarea 3.1.33 - 2018.
  7. Lansarea 2.6.30 - 2016.
  8. Lansarea 2.6.31 - 2017.
  9. Lansarea 3.1.24 - 2015.
  10. Lansarea 3.1.25 - 2015.
  11. Lansarea 3.1.26 - 2015.
  12. Lansarea 3.1.28 - 2015.
  13. Lansarea 3.1.30 - 2016.
  14. Lansarea 3.1.31 - 2016.
  15. Lansarea 3.1.32 - 2018.
  16. Versiunea 3.1.34 - 2019.
  17. Versiunea 3.1.35 - 2020.
  18. Versiunea 3.1.36 - 2020.
  19. Versiunea 3.1.37 - 2021.
  20. Versiunea 3.1.38 - 2021.
  21. Versiunea 3.1.39 - 2021.
  22. https://github.com/smarty-php/smarty/releases/tag/v4.0.0 - 2021.
  23. https://github.com/smarty-php/smarty/releases/tag/v4.0.4 - 2022.
  24. https://github.com/smarty-php/smarty/releases/tag/v4.2.1 - 2022.
  25. Versiunea 2.6.32 - 2021.
  26. Versiunea 3.1.40 - 2021.
  27. Versiunea 3.1.41 - 2022.
  28. Versiunea 3.1.42 - 2022.
  29. Versiunea 3.1.43 - 2022.
  30. Versiunea 3.1.44 - 2022.
  31. Versiunea 3.1.45 - 2022.
  32. Versiunea 3.1.46 - 2022.
  33. Versiunea 3.1.47 - 2022.
  34. Versiunea 4.0.1 - 2022.
  35. Versiunea 4.0.2 - 2022.
  36. Versiunea 4.0.3 - 2022.
  37. Versiunea 4.1.0 - 2022.
  38. Versiunea 4.1.1 - 2022.
  39. Versiunea 4.2.0 - 2022.
  40. Fabien Potencier. Motoare de șabloane în ______MachineWaybackla2013ianuarie17ArhivatPHP Wayback Machine )
  41. Brian Lozier. Motoare de șabloane . Consultat la 9 octombrie 2010. Arhivat din original pe 27 septembrie 2010.
  42. Reabilitarea tehnologiilor XML / XSLT Copie arhivată din 7 august 2016 la Wayback Machine , articol scris de șeful UMI.CMS , Sergey Kotyrev, despre Habrahabr
  43. Quicky Arhivat la 7 ianuarie 2014 la Wayback Machine ( Documentație arhivată la 2 august 2010 la Wayback Machine )
  44. vezi, de asemenea, revizuirea sa Comparative of PHP Template Engines: Part 1 Arhivat 17 ianuarie 2013 la Wayback Machine / arhivat 7 august 2016 la Wayback Machine , partea 2 Arhivat 4 decembrie 2012 la Wayback Machine / tradus Copie arhivată din 7 august 2016 la Wayback Machine
  45. Dwoo (link în jos) . Consultat la 23 octombrie 2010. Arhivat din original pe 27 octombrie 2010. 
  46. Template Lite . Consultat la 23 octombrie 2010. Arhivat din original la 14 noiembrie 2010.
  47. Fenom
  48. Fenom. Cum funcționează , documentația principală a Fenom

Literatură

  • João Prado Maia, Hasin Hayder, Lucian Gheorghe, Lucian Gheorge. Smarty: Programare și aplicații cu șabloane PHP. - Editura Packt, 2006. - 256 p. — ISBN 978-1904811404 .

Link -uri