mirror of
https://github.com/smarty-php/smarty.git
synced 2025-11-07 15:51:37 +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
|
|||
|
|
-->
|