Sabelotodo

Sabelotodo
Tipo de Procesador de plantillas de compilación
Desarrollador nuevo grupo digital inc.
Escrito en PHP [2]
Sistema operativo Software multiplataforma
Primera edición 2001 [1]
ultima versión
Licencia GNU LGPL
Sitio web smarty.net

Smarty es un motor de compilación de plantillas para PHP , una de las herramientas que le permite separar la lógica de la aplicación y los datos de la presentación en el espíritu del concepto Modelo-vista-controlador .

El lenguaje de plantillas Smarty amplía HTML con etiquetas inteligentes que están incrustadas en el documento. Estas etiquetas pueden ser variables de PHP (posiblemente con modificadores, por ejemplo, {$variable|nl2br} ), funciones o construcciones básicas de programación estructurada como {if...} ... {else} ... {/if} .

Uno de los propósitos de Smarty es separar la lógica de la aplicación de la presentación. Las plantillas aún pueden contener lógica, pero debe ser lógica de presentación de datos . Debería resolver problemas como conectar otras plantillas, alternar el color de las filas en una tabla, convertir letras a mayúsculas, recorrer una matriz para mostrarla, etc. La biblioteca Smarty en sí no fuerza la separación de la lógica y la presentación de la aplicación; la disciplina en el uso de plantillas web se deja en manos del desarrollador.

Smarty es la primera biblioteca de plantillas que utiliza un mecanismo de almacenamiento en caché de código de bytes.

Características

Smarty te permite:

Para facilitar la creación de aplicaciones web escalables, Smarty tiene un mecanismo de almacenamiento en caché incorporado .

Mecanismo de acción

Smarty lee archivos de plantilla y genera código PHP basado en ellos. El código se crea una vez y luego solo se ejecuta, por lo que no es necesario procesar un archivo de plantilla para cada solicitud y cada plantilla puede aprovechar al máximo las extensiones de almacenamiento en caché de código de bytes de PHP, como eAccelerator o PHP Accelerator . Smarty fue probablemente la primera biblioteca de plantillas en utilizar dicho mecanismo. Más tarde, aparecieron muchos análogos, utilizando tanto la sintaxis de plantilla tipo smarty (como Twig o Quicky ) como otros enfoques de la sintaxis de plantilla.

La compilación de plantillas logra un rendimiento comparable al de las plantillas PHP escritas a mano [40] . Las construcciones if/elseif/else/endif se pasan al controlador de PHP, por lo que la sintaxis para la expresión {if ...} puede ser tan simple o tan compleja como se desee. Es posible anidar ilimitadamente secciones, condiciones, etc.

Código de ejemplo

Página HTML con etiquetas Smarty:

<!DOCTYPE html PÚBLICO "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> < html > < encabezado > < título > {$title_text} </ title > < meta http-equiv = "tipo de contenido" content = "text/html; charset=iso-8859-1" /> </ head > < cuerpo > {*Comentario que no estará en el código HTML*} < p > {$cuerpo_texto} </ p > </ body > <!-- El comentario que estará en el código HTML --> </ html >

La lógica de trabajo en el script PHP es la siguiente:

define ( 'SMARTY_DIR' , 'smarty-2.6.22/' ); require_once ( SMARTY_DIR . 'Smarty.class.php' ); $inteligente = nuevo inteligente (); $inteligente -> template_dir = './templates/' ; $inteligente -> compile_dir = './templates/compile/' ; $inteligente -> cache_dir = './templates/cache/' ; $inteligente -> almacenamiento en caché = falso ; $inteligente -> error_reporting = E_ALL ; // DEJAR E_ALL DURANTE EL DESARROLLO $smarty -> depuración = true ; $inteligente -> asignar ( 'title_text' , 'TITLE: ejemplo de Smarty...' ); $inteligente -> asignar ( 'body_text' , 'BODY: Este es el texto de salida de Assign()' ); $inteligente -> mostrar ( 'index.tpl' );

Crítica

Smarty (y las bibliotecas basadas en este enfoque) suelen recibir críticas desde dos direcciones. Los defensores del uso de un subconjunto de PHP como lenguaje de plantillas argumentan que "básicamente proporciona una interfaz para PHP usando una nueva sintaxis" y, por lo tanto, ofrece pocas ventajas. [41] Los defensores de XSLT encuentran que Smarty deja demasiado espacio para mezclar la lógica y la presentación, lo que hace que las plantillas de Smarty sean mucho más difíciles de editar y reutilizar para terceros . [42] .

Análogos

Desde 2008, está disponible un seguidor de la sintaxis Smarty, el motor de plantillas Quicky [43] , cuya principal característica distintiva es un enfoque diferente para la implementación del análisis de plantillas (que, según el autor, funciona mucho más rápido) y una extensión de la sintaxis ya familiar para muchos: soporte para ayudantes (funciones declaradas directamente en la plantilla), la presencia de constantes de bucle "mágicas", una sintaxis simplificada para asignar valores de variables sin usar {math}, estructuras de control compilables.

Un desarrollo interesante de las ideas de Smarty es la biblioteca Twig , desarrollada y mantenida por Fabien Potencier, el desarrollador principal e ideólogo de Symfony [44] .

Los manejadores de plantillas como Dwoo [45] o el manejador integrado en eZ Publish / ezComponents sintaxis tipo smarty

Hasta 2007, también se desarrolló una bifurcación "ligera" de Smarty - Template Lite [46] (en las primeras versiones de Smarty Light).

En 2013, se lanzó la primera versión del motor de plantillas Fenom [47] , compatible con la sintaxis tipo Smarty. Una característica distintiva del motor de plantillas es el análisis de plantillas, que se produce sin el uso de expresiones regulares, pero se basa en el tokenizador integrado [48] , que hace que el análisis de plantillas sea rápido y el motor de plantillas en sí sea sencillo.

Notas

  1. https://web.archive.org/web/20010128152400/http://www.phpinsider.com/php/code/Smarty/docs/
  2. The smarty Open Source Project en Open Hub: Página de idiomas - 2006.
  3. Versión 3.1.27 - 2015.
  4. Lanzamiento de Smarty 3.1.29 - 2015.
  5. Versión 3.1.29 - 2015.
  6. Versión 3.1.33 - 2018.
  7. Versión 2.6.30 - 2016.
  8. Versión 2.6.31 - 2017.
  9. Versión 3.1.24 - 2015.
  10. Versión 3.1.25 - 2015.
  11. Versión 3.1.26 - 2015.
  12. Versión 3.1.28 - 2015.
  13. Versión 3.1.30 - 2016.
  14. Versión 3.1.31 - 2016.
  15. Versión 3.1.32 - 2018.
  16. Versión 3.1.34 - 2019.
  17. Versión 3.1.35 - 2020.
  18. Versión 3.1.36 - 2020.
  19. Versión 3.1.37 - 2021.
  20. Versión 3.1.38 - 2021.
  21. Versió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. Versión 2.6.32 - 2021.
  26. Versión 3.1.40 - 2021.
  27. Versión 3.1.41 - 2022.
  28. Versión 3.1.42 - 2022.
  29. Versión 3.1.43 - 2022.
  30. Versión 3.1.44 - 2022.
  31. Versión 3.1.45 - 2022.
  32. Versión 3.1.46 - 2022.
  33. Versión 3.1.47 - 2022.
  34. Versión 4.0.1 - 2022.
  35. Versión 4.0.2 - 2022.
  36. Versión 4.0.3 - 2022.
  37. Versión 4.1.0 - 2022.
  38. Versión 4.1.1 - 2022.
  39. Versión 4.2.0 - 2022.
  40. Fabien Potencier. Motores de plantillas en ______MachineWaybacken2013enero17 deelArchivadoPHP Wayback Machine )
  41. Brian Lozier. Motores de plantillas . Consultado el 9 de octubre de 2010. Archivado desde el original el 27 de septiembre de 2010.
  42. Rehabilitación de tecnologías XML/XSLT Copia archivada del 7 de agosto de 2016 en Wayback Machine , artículo del director de UMI.CMS , Sergey Kotyrev, sobre Habrahabr
  43. Quicky Archivado el 7 de enero de 2014 en Wayback Machine ( Documentación archivada el 2 de agosto de 2010 en Wayback Machine )
  44. ver también su Revisión comparativa de los motores de plantillas PHP: Parte 1 Archivado el 17 de enero de 2013 en Wayback Machine / archivado el 7 de agosto de 2016 en Wayback Machine , parte 2 Archivado el 4 de diciembre de 2012 en Wayback Machine / traducido Copia archivada con fecha 7 de agosto de 2016 en la Wayback Machine
  45. Dwoo (enlace descendente) . Consultado el 23 de octubre de 2010. Archivado desde el original el 27 de octubre de 2010. 
  46. Plantilla Lite . Consultado el 23 de octubre de 2010. Archivado desde el original el 14 de noviembre de 2010.
  47. Fenom
  48. Fenom. Cómo funciona , documentación principal de Fenom

Literatura

  • João Prado Maia, Hasin Hayder, Lucian Gheorghe, Lucian Gheorge. Smarty: Programación de Plantillas PHP y Aplicaciones. - Packt Publishing, 2006. - 256 p. — ISBN 978-1904811404 .

Enlaces