2009-11-05 14 views
28

Recientemente he descubierto el marco PHP Kohana (que es impresionante) y estaba leyendo un hilo acerca de su uso en conjunción con un motor de plantillas como Smarty o Twig. Mi pregunta es ¿por qué molestarse? Seguramente un framework MVC, por definición, es un motor de plantillas. Incluso PHP "crudo" es, sin dudas, un motor de plantillas. ¿Qué posibles beneficios hay de agregar otro nivel de abstracción además de lo que ya está presente en un marco como Kohana?¿Por qué utilizar un motor de plantillas con un marco?

EDITAR - que dan cuenta de que un framework MVC no es lo mismo que un motor de plantillas, pero seguramente la parte V hace el mismo trabajo? Quizás una mejor forma de expresar las cosas sería; ¿por qué agregar un motor de plantillas sobre la parte V de una estructura MVC?

Respuesta

17

Tengo dos muy buenas razones que se me ocurren para hacer esto ...

  1. Creación de marcado que se repite en todo el sitio en un formato coherente es más fácil, además de que puede actualizar más tarde sin mucho de desgranar
  2. Si esto es para una empresa real, las personas que determinan el contenido probablemente no estén muy familiarizadas con HTML, y mucho menos con PHP. Tener un lenguaje de plantilla simple que mantenga los estilos mirando correctamente y genere marcas válidas sin mucho conocimiento del código es realmente útil.
8

a menos que permita a las etiquetas cortas,

{$foo} 

es mucho más fácil de leer que

<?php echo $foo; ?> 

multiplicado en un gran proyecto, que se suma.

+2

¡Eso tiene sentido, simplemente reduciendo las pulsaciones de teclas puede ser un regalo del cielo! :) – Mathew

+1

Una mejor comparación es la más escasa * possible * escaping: '{$ user_data | escape}' o '{$ user_data}' vs Kzqai

+1

Con etiquetas cortas en '' '. – DanMan

16

En primer lugar, PHP prima no es un motor de plantillas.

marco continuación, MVC define que el marco se divide en Modelo, Vista y Control. No significa que el marco tenga un motor de plantillas, aunque la Vista se puede integrar con un motor de plantillas nativo o externo. Por lo tanto, el marco puede tener o no un motor de plantillas.

En tercer lugar, Ver! = Plantilla. La vista solo se refiere a cómo se muestran los datos; normalmente no hay plantillas involucradas, mientras que el motor de plantillas hace referencia a un código capaz de colocar datos en las plantillas, lo que reduce en gran medida la necesidad de modificar todos los archivos cuando puede modificarlos en las plantillas

por último, los usuarios marco pueden preferir utilizar un motor de plantillas más comunes, como el Smarty motor de plantillas nativo en el marco. No necesita aprender las nuevas etiquetas en el motor de plantilla nativo.

+0

Entonces, ¿está diciendo que vale la pena usar un motor de plantillas sobre un marco cuando ya conoce la sintaxis del motor de plantillas? ¿Es ese el único + ve? – Mathew

+0

Además, puede ampliar su comentario sobre MCV! = Motor de plantillas, ya que ese es realmente el punto de mi pregunta. Seguramente la parte Vista de MCV * es * una plantilla? – Mathew

+0

Ver no significa plantilla. La vista solo se refiere a cómo se muestran los datos, mientras que el motor de plantillas hace referencia a un fragmento de código capaz de colocar datos en las plantillas. – mauris

6

Una de las razones por las que se desee un motor de plantillas por separado se debe a que PHP prima es un poco demasiado para la presentación de su sitio. Si solo está haciendo su sitio, y tiene una buena idea de cómo las plantillas del sitio deben encajar, entonces esto no es realmente un inconveniente, pero para proyectos más grandes, se interpone en el camino.

Si su proyecto ha superado un desarrollador único, o si desea agregar un diseñador incluso antes de eso, PHP es probablemente un lenguaje demasiado difícil para expresar la presentación. Los lenguajes de plantilla creados a propósito tienen la ventaja de que son simples, y no te dé tanta cuerda como para ahorcarte.

Los proyectos más grandes, incluso cuando no requieren mucha entrada de múltiples desarrolladores, pueden hacer que la forma libre de PHP simple sea un poco difícil de manejar. el motor de plantillas creado específicamente proporciona (o impone) una estructura básica de cómo cada plantilla se ajusta con el resto.

+1

Veo su punto, pero no consideraría que PHP sin procesar sea demasiado para propósitos de presentación; ¡Estoy bastante feliz de arriesgarme a ahorcarme con espagueti de PHP! – Mathew

+0

@MattW Solo tirando por ahí, pero esa es una práctica increíblemente inamovible y la mayoría de la gente no quiere trabajar con alguien que hace ese tipo de cosas. –

+1

¿eh ?! Saber un lenguaje de scripting y usarlo, en lugar de confiar en una capa de abstracción potencialmente innecesaria es una práctica que no se puede contratar ... Este comentario resume bastante bien las cosas; http://www.talkphp.com/general/4001-template-engine.html#post22329 – Mathew

2

Mauris ya ha cubierto por qué MVC! = Motor de plantillas, pero me gustaría añadir que cuanto más potente es el motor de plantillas es el más limpio y más concisa sus plantillas son. Esto hace que sea especialmente fácil para las personas que no están familiarizadas con PHP editarlas (por ejemplo, si un diseñador/desarrollador front-end necesita editar el HTML). En general, los MVC no cuentan con este tipo de funcionalidad.

Echa un vistazo a este example de Smarty. Nunca he usado el motor y responder esta pregunta es la primera vez que veo su marcado, pero ya puedo decir exactamente qué está haciendo. Además, la cantidad de código que tiene que escribir es notablemente menor ya que Smarty y otros motores se encargan de cosas mundanas como colores de fila alternativos y contenido alternativo para conjuntos de datos vacíos en el primer ejemplo, y cosas tontas como formato <select> listas en this example.

+0

El desacoplamiento del desarrollador front-end es una buena razón. +1 – Mathew

1

MVC implementa la gestión de plantillas PHP, si trabajas en equipo con diseñadores web, sería mejor utilizar plantillas HTML. Smarty y Twig son famosos y buenos. De todos modos, simplemente elija el motor de plantillas con el que se sienta más cómodo.

+0

Interesante sitio de comparación de velocidad ... – Kzqai

Cuestiones relacionadas