mirror of
				https://github.com/smarty-php/smarty.git
				synced 2025-11-03 22:01:36 +01:00 
			
		
		
		
	
		
			
	
	
		
			104 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
		
		
			
		
	
	
			104 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
| 
								 | 
							
								<?xml version="1.0" encoding="iso-8859-1"?>
							 | 
						|||
| 
								 | 
							
								<!-- $Revision$ -->
							 | 
						|||
| 
								 | 
							
								 <preface id="preface">
							 | 
						|||
| 
								 | 
							
								  <title>Pr<EFBFBD>logo</title>
							 | 
						|||
| 
								 | 
							
								  <para>
							 | 
						|||
| 
								 | 
							
								   Esta es indudablemente una de las preguntas que mas se hacen en las listas 
							 | 
						|||
| 
								 | 
							
								   de correo de PHP: Como hacer mis scripts de PHP independientes del dise<73>o?.
							 | 
						|||
| 
								 | 
							
								   Mientras PHP se encarga de como "incrustar scripts en lenguaje HTML",
							 | 
						|||
| 
								 | 
							
								   despu<70>s de escribir los proyectos que mezclan PHP y HTML libremente, 
							 | 
						|||
| 
								 | 
							
								   esto trae como consecuencia la idea de separar la forma y el contenido, 
							 | 
						|||
| 
								 | 
							
								   muy buena idea[TM].  En adici<63>n, en muchas compa<70>ias la 
							 | 
						|||
| 
								 | 
							
								   interpretaci<63>n de esquema es dise<73>ador y programador por separado. 
							 | 
						|||
| 
								 | 
							
								   Por consiguiente, la busqueda trae como soluci<63>n una plantilla(template).
							 | 
						|||
| 
								 | 
							
								  </para>
							 | 
						|||
| 
								 | 
							
								  <para>
							 | 
						|||
| 
								 | 
							
								   Por ejemplo en nuestra compa<70>ia, el desarrollo de una aplicaci<63>n es
							 | 
						|||
| 
								 | 
							
								   como sigue: Despu<70>s de tener la documentaci<63>n necesaria, el 
							 | 
						|||
| 
								 | 
							
								   dise<73>ador de web dise<73>a el prototipo de la interfaz y la entrega al 
							 | 
						|||
| 
								 | 
							
								   programador.  El programador implementa las reglas de negocio en PHP y usa el
							 | 
						|||
| 
								 | 
							
								   prototipo para crear el "esqueleto" de la plantilla.  
							 | 
						|||
| 
								 | 
							
								   El proyeto esta en manos de la persona responsable del HTML designer/web page 
							 | 
						|||
| 
								 | 
							
								   que produzca la plantilla para su gloria completa.  El proyecto debe ir y regresar 
							 | 
						|||
| 
								 | 
							
								   entre programaci<63>n/HTML varias veces.  De esa manera, es importante para 
							 | 
						|||
| 
								 | 
							
								   tener un buen suporte de templates porque los programadores no quieren hacer nada 
							 | 
						|||
| 
								 | 
							
								   con HTML ni quieren dise<73>o HTML al rededor del codigo PHP.
							 | 
						|||
| 
								 | 
							
								   Los dise<73>adores precisan de soporte para archivos de configuraci<63>n, bloques
							 | 
						|||
| 
								 | 
							
								   din<69>micos y otras interfaces usadas, mas ellos no quieren ocuparse con las
							 | 
						|||
| 
								 | 
							
								   compejidades del lenguaje de programaci<63>n PHP.
							 | 
						|||
| 
								 | 
							
								  </para>
							 | 
						|||
| 
								 | 
							
								  <para>
							 | 
						|||
| 
								 | 
							
								   Buscando, actualmente existen muchas soluciones de templates disponibles para
							 | 
						|||
| 
								 | 
							
								   PHP, la mayor parte de ellos les provee de una forma rudimentaria de 
							 | 
						|||
| 
								 | 
							
								   sustituci<63>n de variables dentro del template y hace una forma limitada 
							 | 
						|||
| 
								 | 
							
								   de la funcionalidad din<69>mica del bloque.  
							 | 
						|||
| 
								 | 
							
								   Pero nuestras necesidades requieren mas que eso.  
							 | 
						|||
| 
								 | 
							
								   Porque no queremos programadores que no quieran tener trato con HTML del todo, 
							 | 
						|||
| 
								 | 
							
								   pero esto puede ser casi inevitable.
							 | 
						|||
| 
								 | 
							
								   Por ejemplo, si un dise<73>ador quiere alternar colores de fondo sobre bloques 
							 | 
						|||
| 
								 | 
							
								   din<69>micos, esto tuvo que trabajarse con el programador anticipadamente.
							 | 
						|||
| 
								 | 
							
								   Nosotros necesitamos tambi<62>n que los dise<73>adores esten capacitados para 
							 | 
						|||
| 
								 | 
							
								   usar archivos de configuraci<63>n, y colocar variables de ellos dentro de 
							 | 
						|||
| 
								 | 
							
								   los templates.  La lista continua.
							 | 
						|||
| 
								 | 
							
								  </para>
							 | 
						|||
| 
								 | 
							
								  <para>
							 | 
						|||
| 
								 | 
							
								   Nosotros empezamos escribiendo por fuera una especulaci<63>n para un
							 | 
						|||
| 
								 | 
							
								   motor de plantillas(templates) atrasado de 1999.
							 | 
						|||
| 
								 | 
							
								   Despu<70>s de terminar la especulaci<63>n, comenzamos a trabajar 
							 | 
						|||
| 
								 | 
							
								   un motor de plantillas escrito en C que esperanzadoramente fue aceptado 
							 | 
						|||
| 
								 | 
							
								   para ser incorporado con PHP.
							 | 
						|||
| 
								 | 
							
								   No solamente nos encontramos con algunas complicadas barreras tecnicas, 
							 | 
						|||
| 
								 | 
							
								   si no tambi<62>n hubo acalorados debates sobre lo que exactamente 
							 | 
						|||
| 
								 | 
							
								   debia de hacer o no un motor de plantillas.
							 | 
						|||
| 
								 | 
							
								   De esta experiencia, decidimos que un motor de platillas dever<65>a 
							 | 
						|||
| 
								 | 
							
								   ser escrito en PHP como una clase, para que cualquiera lo use de la misma
							 | 
						|||
| 
								 | 
							
								   forma como ellos ven.
							 | 
						|||
| 
								 | 
							
								   As<41> nosotros escribimos un motor que es <productname>SmartTemplate
							 | 
						|||
| 
								 | 
							
								   </productname> nunca volvio a existir(nota: esa clase nunca fue
							 | 
						|||
| 
								 | 
							
								   enviada al p<>blico).  Esta era una clase que ralizaba casi todo lo que nosotros 
							 | 
						|||
| 
								 | 
							
								   necesitabamos: sustituci<63>n de variables regulares, soporte incluso 
							 | 
						|||
| 
								 | 
							
								   de otras plantillas, integraci<63>n con archivos de configuraci<63>n, 
							 | 
						|||
| 
								 | 
							
								   incrustaci<63>n de c<>digo PHP, funcionalidades 'if' limitada y muchos
							 | 
						|||
| 
								 | 
							
								   mas bloques din<69>micos robustos que podr<64>an ser anidados muchas veces.
							 | 
						|||
| 
								 | 
							
								   Todo esto con expresiones regulares y el c<>digo producido seria mejor, como 
							 | 
						|||
| 
								 | 
							
								   diriamos nosotros, impenetrable.  
							 | 
						|||
| 
								 | 
							
								   Eso era tambi<62>n notoriamente lento en grandes aplicaciones por todas 
							 | 
						|||
| 
								 | 
							
								   las interpretaciones y expresiones regulares trabajando en cada 
							 | 
						|||
| 
								 | 
							
								   requisici<63>n.
							 | 
						|||
| 
								 | 
							
								   El mayor problema del punto de vista de un programador era todo el trabajo
							 | 
						|||
| 
								 | 
							
								   necesario en el procesamiento del scripts PHP y procesamiento de bloques
							 | 
						|||
| 
								 | 
							
								   din<69>micos de la plantilla. Como hacemos eso facilmente?
							 | 
						|||
| 
								 | 
							
								  </para>
							 | 
						|||
| 
								 | 
							
								  <para>
							 | 
						|||
| 
								 | 
							
								   Entonces se origino la visi<73>n de que finalmente se convirtiera en
							 | 
						|||
| 
								 | 
							
								   Smarty. Nosotros sabemos que r<>pido es el c<>digo PHP sin las cabeceras 
							 | 
						|||
| 
								 | 
							
								   y la interpretaci<63>n de plantillas(templates).
							 | 
						|||
| 
								 | 
							
								   Tambi<62>n sabemos que meticuloso y arrogante es el lenguaje PHP su poder 
							 | 
						|||
| 
								 | 
							
								   debe ser aceptable para un dise<73>ador, y este podr<64>a ser enmascarado con 
							 | 
						|||
| 
								 | 
							
								   una simples sintaxis de plantillas(templates).
							 | 
						|||
| 
								 | 
							
								   Entonces que pasara si nosotros convinamos las dos fuerzas?
							 | 
						|||
| 
								 | 
							
								   De esta manera, nacio Smarty...
							 | 
						|||
| 
								 | 
							
								  </para>
							 | 
						|||
| 
								 | 
							
								 </preface>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								<!-- Keep this comment at the end of the file
							 | 
						|||
| 
								 | 
							
								Local variables:
							 | 
						|||
| 
								 | 
							
								mode: sgml
							 | 
						|||
| 
								 | 
							
								sgml-omittag:t
							 | 
						|||
| 
								 | 
							
								sgml-shorttag:t
							 | 
						|||
| 
								 | 
							
								sgml-minimize-attributes:nil
							 | 
						|||
| 
								 | 
							
								sgml-always-quote-attributes:t
							 | 
						|||
| 
								 | 
							
								sgml-indent-step:1
							 | 
						|||
| 
								 | 
							
								sgml-indent-data:t
							 | 
						|||
| 
								 | 
							
								indent-tabs-mode:nil
							 | 
						|||
| 
								 | 
							
								sgml-parent-document:nil
							 | 
						|||
| 
								 | 
							
								sgml-default-dtd-file:"../../../../manual.ced"
							 | 
						|||
| 
								 | 
							
								sgml-exposed-tags:nil
							 | 
						|||
| 
								 | 
							
								sgml-local-catalogs:nil
							 | 
						|||
| 
								 | 
							
								sgml-local-ecat-files:nil
							 | 
						|||
| 
								 | 
							
								End:
							 | 
						|||
| 
								 | 
							
								vim600: syn=xml fen fdm=syntax fdl=2 si
							 | 
						|||
| 
								 | 
							
								vim: et tw=78 syn=sgml
							 | 
						|||
| 
								 | 
							
								vi: ts=1 sw=1
							 | 
						|||
| 
								 | 
							
								-->
							 |