Smarty

Smarty
Typ Procesor kompilace šablon
Vývojář Nová digitální skupina Inc.
Zapsáno v PHP [2]
Operační systém Multiplatformní software
První vydání 2001 [1]
Nejnovější verze
Licence GNU LGPL
webová stránka smarty.net

Smarty je kompilační šablonový engine pro PHP , jeden z nástrojů, který umožňuje oddělit aplikační logiku a data od prezentace v duchu konceptu Model-view-controller .

Jazyk šablon Smarty rozšiřuje HTML o smarty tagy , které jsou vložené do dokumentu. Těmito značkami mohou být proměnné PHP (případně s modifikátory, např. {$variable|nl2br} ), funkce nebo základní strukturované programovací konstrukty jako {if …} … {else} … {/if} .

Jedním z účelů Smarty je oddělit aplikační logiku od prezentace. Šablony mohou stále obsahovat logiku, ale musí to být logika prezentace dat . Měla by řešit problémy, jako je připojování dalších šablon, střídání vybarvování řádků v tabulce, převod písmen na velká písmena, procházení pole k jejímu zobrazení atd. Knihovna Smarty sama o sobě nevynucuje oddělení aplikační logiky a prezentace – správné disciplína pomocí webových šablon je ponechána na vývojáři.

Smarty je první knihovna šablon, která používá mechanismus ukládání do mezipaměti bajtkódu .

Funkce

Smarty vám umožňuje:

Aby bylo vytváření škálovatelných webových aplikací snazší, má Smarty vestavěný mechanismus ukládání do mezipaměti .

Mechanismus účinku

Smarty čte soubory šablon a na jejich základě generuje PHP kód. Kód je vytvořen jednou a poté pouze spuštěn, takže není potřeba zpracovávat soubor šablony pro každý požadavek a každá šablona může plně využít rozšíření PHP bytecode caching , jako je eAccelerator nebo PHP Accelerator . Smarty byla pravděpodobně první knihovnou šablon, která používala takový mechanismus. Později se objevilo mnoho analogií využívajících syntaxi šablon podobné smarty (jako Twig nebo Quicky ) a další přístupy k syntaxi šablon.

Kompilace šablon dosahuje výkonu srovnatelného s ručně psanými PHP šablonami [40] . Konstrukty if/elseif/else/endif jsou předány obslužnému programu PHP, takže syntaxe výrazu {if ...} může být jednoduchá nebo složitá podle potřeby. Je možné neomezené vnořování sekcí, podmínek atd.

Ukázkový kód

HTML stránka se Smarty tagy:

<!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 > {* Komentář, který nebude v HTML kódu *} < p > {$body_text} </ p > </ body > <!-- Komentář, který bude v kódu HTML --> </ html >

Logika práce ve skriptu PHP je níže:

definovat ( 'SMARTY_DIR' , 'smarty-2.6.22/' ); require_once ( SMARTY_DIR . 'Smarty.class.php' ); $smarty = nový Smarty (); $smarty -> template_dir = './templates/' ; $smarty -> kompilovat_adresar = './templates/kompilovat/' ; $smarty -> cache_dir = './templates/cache/' ; $smarty -> caching = false ; $smarty -> error_reporting = E_ALL ; // OPUSTIT E_ALL BĚHEM VÝVOJE $smarty -> debugging = true ; $smarty -> přiřadit ( 'title_text' , 'TITLE: Smarty příklad ...' ); $smarty -> assign ( 'body_text' , 'BODY: Toto je textový výstup pomocí assign()' ); $smarty -> display ( 'index.tpl' );

Kritika

Smarty (a knihovny založené na tomto přístupu) jsou obvykle kritizovány ze dvou směrů. Zastánci používání podmnožiny PHP jako šablonovacího jazyka tvrdí, že protože „v podstatě poskytuje rozhraní pro PHP pomocí nové syntaxe“, a proto nabízí malou výhodu. [41] Zastánci XSLT zjišťují, že Smarty ponechává příliš mnoho prostoru pro míchání logiky a prezentace, takže je pro třetí strany mnohem obtížnější upravovat a znovu používat smarty šablony . [42] .

Analogy

Od roku 2008 je k dispozici následovník syntaxe Smarty, šablonovací engine Quicky [43] , jehož hlavním rozlišovacím znakem je odlišný přístup k implementaci šablonového parsování (který podle autora funguje mnohem rychleji) a rozšíření již známé syntaxe: podpora pomocníků (funkce deklarované přímo v šabloně), přítomnost konstant „magické“ smyčky, zjednodušená syntaxe pro přiřazování hodnot proměnných bez použití {math}, kompilovatelné řídicí struktury.

Zajímavým vývojem Smarty nápadů je knihovna Twig , kterou vyvíjí a udržuje Fabien Potencier, hlavní vývojář a ideolog Symfony [44] .

Obsluha šablon, jako je Dwoo [45] nebo obslužná rutina zabudovaná do eZ Publish / ezComponents ,

Do roku 2007 byla vyvinuta i „lehká“ vidlice Smarty – Template Lite [46] (v prvních verzích Smarty Light).

V roce 2013 bylo vydáno první vydání šablonovacího enginu Fenom [47] , které podporuje syntaxi podobnou Smarty. Charakteristickým rysem enginu šablon je parsování šablon, které probíhá bez použití regulárních výrazů, ale je založeno na vestavěném tokenizeru [48] , díky kterému je parsování šablon rychlé a samotný engine šablony snadný.

Poznámky

  1. https://web.archive.org/web/20010128152400/http://www.phpinsider.com/php/code/Smarty/docs/
  2. Chytrý projekt Open Source na Open Hub: Stránka jazyků - 2006.
  3. Vydání 3.1.27 – 2015.
  4. Vydán Smarty 3.1.29 - 2015.
  5. Vydání 3.1.29 – 2015.
  6. Vydání 3.1.33 – 2018.
  7. Vydání 2.6.30 - 2016.
  8. Vydání 2.6.31 – 2017.
  9. Vydání 3.1.24 – 2015.
  10. Vydání 3.1.25 – 2015.
  11. Vydání 3.1.26 – 2015.
  12. Vydání 3.1.28 – 2015.
  13. Vydání 3.1.30 – 2016.
  14. Vydání 3.1.31 – 2016.
  15. Vydání 3.1.32 – 2018.
  16. Vydání 3.1.34 – 2019.
  17. Vydání 3.1.35 – 2020.
  18. Vydání 3.1.36 – 2020.
  19. Vydání 3.1.37 – 2021.
  20. Vydání 3.1.38 – 2021.
  21. Vydání 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. Vydání 2.6.32 – 2021.
  26. Vydání 3.1.40 – 2021.
  27. Vydání 3.1.41 – 2022.
  28. Vydání 3.1.42 – 2022.
  29. Vydání 3.1.43 – 2022.
  30. Vydání 3.1.44 – 2022.
  31. Vydání 3.1.45 – 2022.
  32. Vydání 3.1.46 – 2022.
  33. Vydání 3.1.47 – 2022.
  34. Vydání 4.0.1 – 2022.
  35. Vydání 4.0.2 – 2022.
  36. Vydání 4.0.3 – 2022.
  37. Vydání 4.1.0 – 2022.
  38. Vydání 4.1.1 – 2022.
  39. Vydání 4.2.0 – 2022.
  40. Fabien Potencier. Templating Engines v na______MachineWaybackna2013ledna17.ArchivovánoPHP Wayback Machine )
  41. Brian Lozier. Šablonové motory . Získáno 9. října 2010. Archivováno z originálu 27. září 2010.
  42. Rehabilitace technologií XML / XSLT Archivovaná kopie ze 7. srpna 2016 na Wayback Machine , článek šéfa UMI.CMS Sergeje Kotyreva o Habrahabru
  43. Quicky Archived 7. ledna 2014 na Wayback Machine ( Dokumentace archivována 2. srpna 2010 na Wayback Machine )
  44. viz také jeho Comparative Review of PHP Template Engines: Part 1 Archived 17. ledna 2013 na Wayback Machine / archivováno 7. srpna 2016 na Wayback Machine , část 2 Archivováno 4. prosince 2012 na Wayback Machine / přeloženo Archivovaná kopie ze 7. srpna 2016 u Wayback Machine
  45. Dwoo (downlink) . Získáno 23. října 2010. Archivováno z originálu 27. října 2010. 
  46. Šablona Lite . Získáno 23. října 2010. Archivováno z originálu 14. listopadu 2010.
  47. Fenom
  48. Fenom. Jak to funguje , hlavní dokumentace Fenom

Literatura

  • Hrají: João Prado Maia, Hasin Hayder, Lucian Gheorghe, Lucian Gheorge. Smarty: Programování a aplikace šablon PHP. - Packt Publishing, 2006. - 256 s. — ISBN 978-1904811404 .

Odkazy