TUTORIAL: mecanismo básico de plantillas de PHP

  • Rabid Dog
  • Web Master
  • Web Master
  • Avatar de Usuario
  • Registrado: May 21, 2004
  • Mensajes: 3229
  • Loc: South Africa
  • Status: Offline

Nota Junio 30th, 2009, 6:56 pm

Mecanismo de plantillas de base de PHP



Después de haber visto muchas cadenas de HTML incrustado en funciones de PHP pensé que sería útil para ilustrar una muy simple manera directa de la aplicación de un motor de plantillas. Este tutorial se divide en 4 secciones a saber,
Requisitos 1)
2) Diseño de Sistemas (UML)
3) Aplicación
Uso de 4) de la aplicación de

Requisitos


1) servidor HTTP completamente funcionales que incluyen binarios de PHP para que el servidor de
2) Editor de texto
3) explorador Web capaz de renderizar el contenido de

Diseño de Sistemas


Attachments:
TutorialClassModel.gif


Descripción:
css = nuestro css de la plantilla
isValid = no utilizado en este tutorial, pero podría ser útil una vez que consiga la caída de este, para comprobar si la plantilla es válido sobre la base de criterios de lo que cada vez que usted decida (ubicación del archivo no válida, algo que no define etc etc)
templateDir = el camino e incluyendo el directorio contendo nuestra plantilla de
TemplateDir () = el constructor
pantalla (archivo) = el archivo para mostrar en nuestra plantilla

Código: [ Select ]
 
 
function Template(){
  $this->templateDir = "default";
  $this->css = "default.css";
}
 
  1.  
  2.  
  3. function Template(){
  4.   $this->templateDir = "default";
  5.   $this->css = "default.css";
  6. }
  7.  


Aquí se define la plantilla dir como "predeterminado", que significa esto, si usted está trabajando en casa de archivo / mypage.php e incluyendo el archivo de plantilla de allí, la ruta de acceso al directorio que contiene información o se casa / default /. Así, en otras palabras, la carpeta será relativo a la ruta del archivo de llamadas. A continuación definimos la hoja de estilos como default.css que significa que la ruta de acceso es el hogar / default / default.css. ¿Entendido? Gran permite pasar a continuación

Código: [ Select ]
 
function display($file){
  $template = $this;
  error_reporting(E_ALL);
  include_once("template/" . $this->templateDir ."/".$file);
}
 
  1.  
  2. function display($file){
  3.   $template = $this;
  4.   error_reporting(E_ALL);
  5.   include_once("template/" . $this->templateDir ."/".$file);
  6. }
  7.  


Aquí ponemos el nivel de reporte de error, es posible que en una etapa posterior queremos definir una especie de bandera que cambia el nivel de presentación de informes en función del entorno, como la producción o una instancia de desarrollo. a continuación, se incluye el archivo de acuerdo con el directorio que se especifica en el constructor. este camino ha plantilla anteponiendo como prefiero guardar mis plantillas en el directorio de plantillas (que gracioso). Así que el camino sería casa / templates / default.

La clase en toda su gloria a continuación
Código: [ Select ]
 
<?php
 
class Template{
 
  var $templateDir;
  var $css;
  var $isValid;
 
  function Template(){
    $this->templateDir  = "default";
    $this->css = "default.css";
  }
  function display($file){
    $template = $this;
    error_reporting(E_ALL);
    include_once("template/" . $this->templateDir ."/".$file);
  }
}
 
?>
 
  1.  
  2. <?php
  3.  
  4. class Template{
  5.  
  6.   var $templateDir;
  7.   var $css;
  8.   var $isValid;
  9.  
  10.   function Template(){
  11.     $this->templateDir  = "default";
  12.     $this->css = "default.css";
  13.   }
  14.   function display($file){
  15.     $template = $this;
  16.     error_reporting(E_ALL);
  17.     include_once("template/" . $this->templateDir ."/".$file);
  18.   }
  19. }
  20.  
  21. ?>
  22.  


El derecho de todos conmigo hasta ahora? Gran permite definir algunas plantillas

header.tpl (dentro de la carpeta por defecto)
Código: [ Select ]
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>My Template :: <?php echo $template->title; ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="template/<?php echo $template->templateDir . "/default.css" ?>" rel="stylesheet" type="text/css" />
</head>
<body>
<div>
My Template header <?php echo $template->welcome; ?>
</div>
 
  1.  
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html>
  4. <head>
  5. <title>My Template :: <?php echo $template->title; ?></title>
  6. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  7. <link href="template/<?php echo $template->templateDir . "/default.css" ?>" rel="stylesheet" type="text/css" />
  8. </head>
  9. <body>
  10. <div>
  11. My Template header <?php echo $template->welcome; ?>
  12. </div>
  13.  


Ahí vamos, guarde el archivo y permite proceder a home.tpl en el mismo directorio
Código: [ Select ]
 
<div>
Well hello there <?php echo $template->name; ?><br />
I am so glad you could join me on my <?php echo $template->content; ?><br />
Look here, I have put your name in a textbox <input type='text' id="txtMyName" value="<?php echo $template->name; ?>" /><br />
have a happy day!
</div>
</body>
 
  1.  
  2. <div>
  3. Well hello there <?php echo $template->name; ?><br />
  4. I am so glad you could join me on my <?php echo $template->content; ?><br />
  5. Look here, I have put your name in a textbox <input type='text' id="txtMyName" value="<?php echo $template->name; ?>" /><br />
  6. have a happy day!
  7. </div>
  8. </body>
  9.  


Cool por lo que ahora nuestra aplicación se hace! He incluido el cuadro de texto para que pueda ver que esto se puede utilizar en los formularios de entrada de datos cuando los datos de edición. < br>

Uso


Bueno, yo apuesto a que ganas de ver este derecho? bien, incluso si no te voy a mostrar de todos modos :P

Asumamos nuestra página php se llama mypage.php.

Lo primero que hacemos es incluir la clase de plantilla

Código: [ Select ]
 
include_once("lib/Template.class.php") // I have saved the template class we added into a dir called lib as file name Template.class.php
 
  1.  
  2. include_once("lib/Template.class.php") // I have saved the template class we added into a dir called lib as file name Template.class.php
  3.  


Lo siguiente que hacemos es crear una referencia al objeto de plantilla (para aquellos que han trabajado con las clases el término correcto es crear una instancia de clase de plantilla)

Código: [ Select ]
 
$oTemplate = new Template();
 
  1.  
  2. $oTemplate = new Template();
  3.  


Bien, ahora tenemos que rellenar las variables de la página
Código: [ Select ]
 
$oTemplate->title = "Check out my template page!";
$oTemplate->welcome = "Howdy doody!";
$oTemplate->name = "Captain Cheese Monkey";
$oTemplate->content = "Here I can put all my html content, whether it be a read from a file or dynamically created content from my super DB";
 
  1.  
  2. $oTemplate->title = "Check out my template page!";
  3. $oTemplate->welcome = "Howdy doody!";
  4. $oTemplate->name = "Captain Cheese Monkey";
  5. $oTemplate->content = "Here I can put all my html content, whether it be a read from a file or dynamically created content from my super DB";
  6.  


Y lo hace todo! Aquí está la página completa
mypage.php
Código: [ Select ]
 
<?php
include_once("lib/Template.class.php");
 
$oTemplate->title = "Check out my template page!";
$oTemplate->welcome = "Howdy doody!";
$oTemplate->name = "Captain Cheese Monkey";
$oTemplate->content = "Here I can put all my html content, whether it be a read from a file or dynamically created content from my super DB";
 
$oTemplate->display("header.tpl");
$oTemplate->display("home.tpl");
?>
 
  1.  
  2. <?php
  3. include_once("lib/Template.class.php");
  4.  
  5. $oTemplate->title = "Check out my template page!";
  6. $oTemplate->welcome = "Howdy doody!";
  7. $oTemplate->name = "Captain Cheese Monkey";
  8. $oTemplate->content = "Here I can put all my html content, whether it be a read from a file or dynamically created content from my super DB";
  9.  
  10. $oTemplate->display("header.tpl");
  11. $oTemplate->display("home.tpl");
  12. ?>
  13.  


Y que, como dicen en los clásicos es que. Niza, limpio y simple. Puede ampliar esta de aquí a las cuatro esquinas del planeta (está justo al piso?) Y disfrutar de tiempo haciendo las cosas divertidas como codificación de la lógica en oposición a la codificación de cadenas de HTML!

Conclusión


Este es un ejemplo muy simple diseñado para conseguir que la puesta en funcionamiento rápidamente. Esta no es una solución completa, pero está destinado a ayudar a entender cómo separar la lógica de su punto de vista y cómo crear modelos de Niza limpia, que permita un fácil mantenimiento y reusage contenido.

Perro rabioso a cabo.
Watch me grow
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Junio 30th, 2009, 6:56 pm

  • spork
  • Brewmaster
  • Silver Member
  • Avatar de Usuario
  • Registrado: Sep 22, 2003
  • Mensajes: 6128
  • Loc: Seattle, WA
  • Status: Offline

Nota Julio 1st, 2009, 8:46 am

Fye tasa foh fum...Veo en la notación húngara allí!
The Beer Monocle. Classy.
  • Rabid Dog
  • Web Master
  • Web Master
  • Avatar de Usuario
  • Registrado: May 21, 2004
  • Mensajes: 3229
  • Loc: South Africa
  • Status: Offline

Nota Julio 1st, 2009, 9:07 am

lol sí única manera que puedo diferenciar los objetos en PHP ;)
Watch me grow
  • Rabid Dog
  • Web Master
  • Web Master
  • Avatar de Usuario
  • Registrado: May 21, 2004
  • Mensajes: 3229
  • Loc: South Africa
  • Status: Offline

Nota Julio 1st, 2009, 9:16 am

spork escribió:
Fye tasa foh fum...Veo en la notación húngara allí!


Además de un pato en el idioma escrito que es la única manera de ver claramente lo que el objeto es LOL. Yo, sin embargo, apreciamos el hecho de que hasta que los recogió, había una buena risa cuando leí su comentario. Hecho el tutorial vale la pena.
Watch me grow
  • SpooF
  • ٩๏̯͡๏۶
  • Bronze Member
  • Avatar de Usuario
  • Registrado: May 22, 2004
  • Mensajes: 3415
  • Loc: Richland, WA
  • Status: Offline

Nota Julio 1st, 2009, 9:59 am

Perros rabiosos, ¿Cuál es tu asumir sistemas como smarty? ¿Cuándo debe ser utilizado? Ive estado en un montón de discusión sobre los sistemas y smarty como algo sencillo, como lo que tenemos aquí.
#define NULL (::rand() % 2)
  • UPSGuy
  • Lurker ಠ_ಠ
  • Web Master
  • Avatar de Usuario
  • Registrado: Jul 25, 2005
  • Mensajes: 2735
  • Loc: Nashville, TN
  • Status: Offline

Nota Julio 1st, 2009, 10:52 am

Spoof - Sé que no me pregunten, pero malos dar mis dos centavos de todos modos. :D Ive construyó una media docena de proyectos usando Smarty y he pasado los últimos años, o la personalización de mi carrera tres instalaciones de SugarCRM, que también lleva a cabo de Smarty.

En mi humilde opinión, el motor de Smarty es ideal para aplicaciones en las que un gran caché pueden ser útiles. Nuestros sistemas de CRM son golpeados por las rocas a varios cientos de veces cada hora, al servicio de una gran cabecera y el menú con cada golpe, por lo que el almacenamiento en caché es un beneficio para nosotros. También me gusta el exterior de los archivos de configuración que se puede aplicar. Si necesita migrar entre dev / GC / o entornos de productos entre los sistemas y, a continuación, todos los que tengan su configuración en un solo lugar es una gran manera para suavizar las transiciones. Esas están en mi mente como las características que más uso en el Smarty, theres pero también algunos que he utilizado aquí y allá, cuando sea necesario, como el filtrado y funciones de la plantilla. Por supuesto, los templates son compilados y siempre un beneficio, también.

Todo lo que se dice, los theres un lugar para la dulce y simple, también. Un sistema de plantillas como perro rabioso lo que ha facilitado sin duda que mi elección de Smarty para proyectos más pequeños. Smarty realiza sorprendentemente bien a la totalidad de sus capacidades, pero también puede abrumar un proyecto.
I'd love to change the world, but they won't give me the source code.
  • Rabid Dog
  • Web Master
  • Web Master
  • Avatar de Usuario
  • Registrado: May 21, 2004
  • Mensajes: 3229
  • Loc: South Africa
  • Status: Offline

Nota Julio 2nd, 2009, 3:47 am

SpooF escribió:
Perros rabiosos, ¿Cuál es tu asumir sistemas como smarty? ¿Cuándo debe ser utilizado? Ive estado en un montón de discusión sobre los sistemas y smarty como algo sencillo, como lo que tenemos aquí.

Mi opinión sobre smarty es esto.

Se trata de un marco creado por lo que probablemente contiene una gran cantidad de cosas útiles. Lo único que tengo en contra es simplemente eso, es un marco con un montón de cosas en ella :)

Esta sencilla solución de plantillas me ha permitido crear una serie de sitios y trabaja muy bien tranquila. La otra cosa es la curva de aprendizaje. Esto se escribe de forma que se puede ampliar según sea necesario. Por lo tanto, sólo si tiene las extensiones ponerlos, no antes de :)

Debo subrayar de nuevo no tengo nada en contra smarty pero prefieren el control absoluto que salir de mi propio escrito :)

¿Tiene sentido?
Watch me grow
  • spork
  • Brewmaster
  • Silver Member
  • Avatar de Usuario
  • Registrado: Sep 22, 2003
  • Mensajes: 6128
  • Loc: Seattle, WA
  • Status: Offline

Nota Julio 2nd, 2009, 8:30 am

Código: [ Select ]
function display($file){
  $template = $this;
  error_reporting(E_ALL);
  include_once("template/" . $this->TemplateDir ."/".$file);
}
  1. function display($file){
  2.   $template = $this;
  3.   error_reporting(E_ALL);
  4.   include_once("template/" . $this->TemplateDir ."/".$file);
  5. }


¿Para qué sirve la línea azul por encima de servir? Parece que todo lo que están haciendo es crear una copia de su propia referencia, pero no usarlo.
The Beer Monocle. Classy.
  • Rabid Dog
  • Web Master
  • Web Master
  • Avatar de Usuario
  • Registrado: May 21, 2004
  • Mensajes: 3229
  • Loc: South Africa
  • Status: Offline

Nota Julio 2nd, 2009, 8:49 am

Es un raro en PHP.

Voy a hacer algunas pruebas para que usted lo que puedo aclarar por completo
Watch me grow
  • Bogey
  • Bogey
  • Genius
  • Avatar de Usuario
  • Registrado: Jul 14, 2005
  • Mensajes: 8211
  • Loc: USA
  • Status: Offline

Nota Julio 3rd, 2009, 10:10 am

spork escribió:
Código: [ Select ]
function display($file){
  $template = $this;
  error_reporting(E_ALL);
  include_once("template/" . $this->TemplateDir ."/".$file);
}
  1. function display($file){
  2.   $template = $this;
  3.   error_reporting(E_ALL);
  4.   include_once("template/" . $this->TemplateDir ."/".$file);
  5. }


¿Para qué sirve la línea azul por encima de servir? Parece que todo lo que están haciendo es crear una copia de su propia referencia, pero no usarlo.

Se está utilizando...vistazo a la parte HTML de la plantilla de ejemplo...Yo realmente entiendo la mitad de ella...(El para qué parte...no el por qué :lol: )
"Bring forth therefore fruits meet for repentance:" Matthew 3:8
  • Rabid Dog
  • Web Master
  • Web Master
  • Avatar de Usuario
  • Registrado: May 21, 2004
  • Mensajes: 3229
  • Loc: South Africa
  • Status: Offline

Nota Julio 3rd, 2009, 1:33 pm

Si en lugar :) la variable $ plantilla está disponible cuando sea dentro de la plantilla (. tpl) página. En cuanto a por qué? Bien cuando el archivo se incluye que se incluya en el contexto de la función, por lo tanto, la variable $ plantilla está disponible dentro de la página incluye :) Lo que le permite asignar valores a la misma a través de la variable $ oTemplate.

¿Tiene sentido?
Watch me grow
  • spork
  • Brewmaster
  • Silver Member
  • Avatar de Usuario
  • Registrado: Sep 22, 2003
  • Mensajes: 6128
  • Loc: Seattle, WA
  • Status: Offline

Nota Julio 4th, 2009, 10:33 am

Ah veo ahora. Astuto.
The Beer Monocle. Classy.
  • Bogey
  • Bogey
  • Genius
  • Avatar de Usuario
  • Registrado: Jul 14, 2005
  • Mensajes: 8211
  • Loc: USA
  • Status: Offline

Nota Julio 4th, 2009, 11:14 am

Rabid Dog escribió:
Si en lugar :) la variable $ plantilla está disponible cuando sea dentro de la plantilla (. tpl) página. En cuanto a por qué? Bien cuando el archivo se incluye que se incluya en el contexto de la función, por lo tanto, la variable $ plantilla está disponible dentro de la página incluye :) Lo que le permite asignar valores a la misma a través de la variable $ oTemplate.

¿Tiene sentido?

Pensé que era una razón más técnica :shock:
"Bring forth therefore fruits meet for repentance:" Matthew 3:8
  • Rabid Dog
  • Web Master
  • Web Master
  • Avatar de Usuario
  • Registrado: May 21, 2004
  • Mensajes: 3229
  • Loc: South Africa
  • Status: Offline

Nota Julio 4th, 2009, 12:05 pm

Así que es técnico. Eliminar la asignación de $ $ a la variable del template y ver qué pasa ;)
Watch me grow

Publicar Información

  • Total de mensajes en este tema: 14 mensajes
  • Moderador: Tutorial Writers
  • Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC