Foros del Web » Programando para Internet » PHP »

Capas y Templates

Estas en el tema de Capas y Templates en el foro de PHP en Foros del Web. Hola. He visto varios mensajes en este foro, la mayoria de Cluster, que hablaban sobre capas de abstraccion para BDs y templates (solo lo mencionaban, ...
  #1 (permalink)  
Antiguo 29/05/2003, 22:58
 
Fecha de Ingreso: junio-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 876
Antigüedad: 21 años, 10 meses
Puntos: 0
Capas y Templates

Hola.
He visto varios mensajes en este foro, la mayoria de Cluster, que hablaban sobre capas de abstraccion para BDs y templates (solo lo mencionaban, principalmente lo primero).
De esto no entiendo nada, y tampoco pude encontrar info que me ayudara.
Alguien podria explicarme de que se tratan estos dos temas?
Gracias.
  #2 (permalink)  
Antiguo 30/05/2003, 13:46
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Capas de abstraccion: sirven para que te concentres en el QUE HACER, no en el COMO SE HACE. En concreto, con las BD lo que se suele hacer es tener una libreria de funciones (o una clase) que realizan la operaciones basicas de una BD: conectarse, ejecutar consulta, recorrer un recordset, ... . La mayoria de las veces son las mismas funciones que tiene PHP para las BD que soporta. Entonces te preguntaras ¿para que repetir el trabajo? Pues si tienes una libreria (o clase) de estas, puedes usar cualquier base de datos (mysql, postgres, etc) sin cambiar tu codigo, solo cambiando la libreria. Tu codigo tendra llamadas a conectar_bd(), pero la implementacion de esa funcion sera llamar a mysql_connect() si has elegido la libreria para MySQL, pero llamara a pg_connect() si has elegido postgres. Asi te concentras en el que tu codigo defina el QUE hacer (conectar a la base de datos) y dejas a la libreria el trabajo de COMO HACERLO (llamando a la funcion que corresponda).

Templates o plantillas: es otra capa de abstraccion. Al definir la plantilla, defines QUE se va a mostrar en esa pagina, pasando del COMO calcular esos valores. Asi puedes definir en una plantilla que en la etiqueta <title> muestre el valor de la variable $titulo, pero el calculo de la variable $titulo lo hace otra parte del codigo ajeno a la plantilla (quizas es el valor de un parametro GET, quizas depende del idioma que ha seleccionado el usuario). Luego si dedices modificar la plantilla para que titulo tambien se muestre en otra parte de la pagina, no hay ningun problema.

Espero haber sido de ayuda.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 30/05/2003, 15:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Completando la excelente explicación de Josemi....

En el tema de "Templates":

Se trata de tener tu código PHP separado 100% de la presentación de los mismos (HTML/javacript o lo que corresponda).

El "motor" o capa de manejo de "template" .. lo que hace es abrir tu archivo que contiene tu código HTML y tus psudo-codigos (o tag) própios del sistema de templates para que sea este (el motor de templates) via PHP el que "asigne" los valores que correspondan o haga las acciones que se le indiquen ..

Así tendras una "template estilo:

<html>
<head>
<title>{TITULO}</title>
</head>
<body>
<b>Hola {NOMBRE}</b>
</body>
</html>

Y tu código PHP seria algo así (en psudo-código):

Código PHP:
<?
$variable
="Bla blabla";
$otra_variable="bla bla bla";

usa_template("mi_plantilla.html");  // cargas la template que vas a usar ..
asigna($variable,"TITULO"); // haces el "change" de variables ..
asigna($otra_variable,"NOMBE");
muestra_template(); // teminas el proceso de la template enviando el resultado al dispositivo de salida .. en estos casos un navegador ..
?>
Las ventajas de tener tu código PHP sepado completamente del "diseño" de la presentación de esos datos .. como veras te ofrece un gran abanico de posibilidades .. Como; la de cambiar completamente la disposición de los elementos "dinámicos" (que cambien" en tu template .. sin tocar Nada de PHP .. reutilización de código "HTML" (el ejemplo de "template" es muy básico .. pero lo más "potente" de usar "templates" es que se pueden definir bloques de código que PHP (via el motor de template funciones) los leera y usará cuando sean necesarios .. como en bucles/ciclos .. y cosas así ..)

Tanto "motores" de templates (plantillas) como de "abstracción de BD" hay muchos implementados .. No hay un "standar" pero si que hay unos cuantos de estos de los más usados y de forma de trabajar similares ...

Entre las "Capas de Abastracción par BD" está:

ADODB
http://php.weblogs.com/ADODB
(Una de las más "potentes" .. Pero hay muchassss más básicas)

Y en "Templates"

Smarty
http://smarty.php.net
(de las más potentes y complejas ...)

NokTemplate
(del compañero de foro Nok .. en castellano y fáciles de usar)

(también tienes las clásicas FastTemplate y algunas más conocídas).


De todo esto en www.phpclasses.org puedes encontrar .. Normalmente son "classes" (objetos PHP) .. así que trabajan con OOP (Programación Orientada a Objetos).

Y manuales o tutoriales .. en www.phpbuilder.com y www.zonaphp.com tienes ejemplos.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 31/05/2003, 20:25
 
Fecha de Ingreso: junio-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 876
Antigüedad: 21 años, 10 meses
Puntos: 0
Todavia me cuesta entender cuanto eso podria simplificarme las cosas, lo veo al reves. Me voy a tomar un tiempo para pensarlo y ver los links que dejo Cluster, luego vengo de nuevo :)

Gracias a ambos!
  #5 (permalink)  
Antiguo 31/05/2003, 20:47
 
Fecha de Ingreso: febrero-2003
Ubicación: Viña del Mar
Mensajes: 85
Antigüedad: 21 años, 1 mes
Puntos: 2
...zeus_bsas...

Cuando estes haciendo una pagina para un cliente .... tengas todo el diseño listo... junto con tu codigo PHP y el dia antes de entregarlo ... te dice:"Sabes qué?... mi señora vio el diseño y no le gustó... quiere que los datos esten hacia el otro lado....".. y tu dices.. "facil: cambio no mas el codigo"... oops! pero tambien tengo que cambiarl el PHP, fijarme en los If {}else{}, los while.. "...

mientras que si tuvieras el HTML aparte del codigo PHP.. efectivamente solo tienes que dar vuelta el codigo....

.. espero que se entienda...

.. en terminos mas teoricos .. el uso de templates permites que las cosas no se mezclen ... quizas para el desarrollo no es tan significativo(aunque si..por que puedes contratar a un diseñador que se encarge del HTML y tu solo del PHP), pero para las etapas de mantenimiento... las vas a amar!

SaluDoS
__________________
http://www.zypper.cl/blues.gif
(web-hosting)

  #6 (permalink)  
Antiguo 31/05/2003, 20:54
 
Fecha de Ingreso: junio-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 876
Antigüedad: 21 años, 10 meses
Puntos: 0
Todavia no me entra en la cabeza como separar por completo el php del html.
Si en una parte de una pagina tengo un bucle donde una tabla o una celda se repite para mostrar resultados, como puedo separar esa celda del php?
  #7 (permalink)  
Antiguo 31/05/2003, 21:36
 
Fecha de Ingreso: febrero-2003
Ubicación: Viña del Mar
Mensajes: 85
Antigüedad: 21 años, 1 mes
Puntos: 2
Cita:
Mensaje Original por zeus_bsas
Todavia no me entra en la cabeza como separar por completo el php del html.
Si en una parte de una pagina tengo un bucle donde una tabla o una celda se repite para mostrar resultados, como puedo separar esa celda del php?
bueno eso depende de sistema de templates que vayas a usar...

hay varios ^_^

SaluDoS
__________________
http://www.zypper.cl/blues.gif
(web-hosting)

  #8 (permalink)  
Antiguo 31/05/2003, 22:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Zeus .. no sé si entendistes el ejemplo que te puse sobre "templates" .. (el nombre de las funciones o como se llamen es lo de menos .. cada sistema de templates tiene los suyos ..)

El caso que si te das cuenta .. el "motor" de template (via sus funciones) hace el "intercambio" de tus variables "PHP" con las "variables {BLABLABL}" que tienes en la "template" ...

Lo de repetir código HTML para interpretar "filas" o "celdas" de una tabla HTML via "bucles" .. Eso normalmente se hace definiendo "Bloques" ..

Código:
<!-- Inicio_Bloque: bloque_fila -->
<tr>
  <td>Una celda</td>
  <td>{DATO}</td>
</tr>
<!-- Fin_bloque: bloque_fila -->
Eso sería tu template .. o mejor dicho el bloque que vas a "repetir" en tus bucles ..

En PHP .. (es un ejemplo hipotético .. pero es ilustrativo ..)

Código PHP:
// tódas las llamadas a funciones para seleccionar la Template a usar y definir los "bloques" que vamos a usar ..

while (blabla){ // un bucle cualquiera
  
funcion_para_llamar_al_bloque("bloque_fila"); // llamamos al bloque que vamos a usar ...
  
asigna($variable,"DATO"); // aquí asignamos a {DATO} de la template .. nuestra $variable
  
$variable++;
}

muestra_template(); // el resultado lo enviamos al navegador .. 
Como veras mas o menos .. el "motor" de template lo que hace es "leer" el archivo "template.tal" y lo procesa con las funciones de dicho motor para hacer los intercambios de "variables" o mandamos a llamar a cierto bloque que entra dentro de nuestra "template" "master" ...

Lo mejor de todo esto es que lo pruebes .. tal vez viendo cómo funcionan y "tocando código" entiendas a tu manera cómo va la cosa ...

Prueba las NokTemplates (del usuario de los foros Nok ) .. Están en castellano y son fáciles de usar como para que tomes tu primer contacto con un "motor" de Templates ...

http://www.jpw.com.ar/noktemplate/NokTemplate.zip

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 18/06/2003, 00:16
 
Fecha de Ingreso: junio-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 876
Antigüedad: 21 años, 10 meses
Puntos: 0
Perdon por la tardanza, pero recien ahora tengo tiempo de ponerme de nuevo con esto...

Aun no veo el sentido de usar esos codigos. O sea, todavia no se desligan del codigo html y no entiendo cual es la ventaja.

Perdon por ser tan duro, no insulten
  #10 (permalink)  
Antiguo 18/06/2003, 10:57
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
mm Pues si que se desliga el código HTML (presentación) de tu código PHP .. Las "templates" (el HTML con los tag {algo} entre otras cosas) los tienes en archivos APARTE .. y por otro lado tienes tus .php que "cargan y parsean" esa template y ejecutan tu código restante ..

Lo mejor es que lo pruebes. Bajate las NokTemplate (te las recomiendo por qué son fáciles y las tienes en castellano) .. Haz los ejemplos y saca tu mismo conclusiones ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:35.