Basic PHP Templating mécanisme
Ayant vu de nombreuses chaînes intégrées html dans les fonctions PHP j'ai pensé qu'il serait utile d'illustrer d'une manière très simple tout droit avant de mettre en place un moteur de templates. Ce tutoriel est divisé en 4 sections, à savoir
1) Exigences
2) System Design (UML)
3) Mise en oeuvre
4) Utilisation de l'application
Exigences
1) entièrement fonctionnelle serveur HTTP, y compris les binaires PHP pour ce serveur
2) L'Editeur de texte
3) un navigateur Web capable de rendre le contenu
System Design
Description:
css = notre fichier CSS pour le modèle
isValid = non utilisé dans ce tutoriel, mais peut être utile une fois que vous obtenez le coup de la présente pour vérifier si le modèle est valable fondée sur des critères ce que jamais vous décider (emplacement du fichier non valide, ce qui n'est pas de définir etc etc)
templateDir = le chemin et y compris le répertoire contenant ces notre modèle
TemplateDir () = notre constructeur
affichage (fichier) = le fichier à afficher dans notre modèle
function Template(){
$this->templateDir = "default";
$this->css = "default.css";
}
-
-
- function Template(){
- $this->templateDir = "default";
- $this->css = "default.css";
- }
-
Ici, nous définissons le modèle dir comme "default" qui veut dire ceci, si vous travaillez sur les fichiers d'accueil / mypage.php et y compris le fichier de modèle à partir de là, le chemin vers le répertoire contenant les infos e sera à la maison / default /. Donc, en d'autres termes, le dossier est relatif au chemin du dossier d'appel. Ensuite, nous définir la feuille de style comme default.css qui signifie que le chemin est home / default / default.css. Comprenez-vous? Great permet de passer ensuite
function display($file){
$template = $this;
error_reporting(E_ALL);
include_once("template/" . $this->templateDir ."/".$file);
}
-
- function display($file){
- $template = $this;
- error_reporting(E_ALL);
- include_once("template/" . $this->templateDir ."/".$file);
- }
-
Ici, nous fixons le niveau d'erreur, vous pourriez à un stade ultérieur souhaitez définir une sorte de pavillon qui modifie le niveau des rapports en fonction de l'environnement, comme par exemple la production ou de développement. alors nous inclure le fichier suivant dans le répertoire que nous avons spécifié dans le constructeur. Cette trajectoire a template préfixant comme je préfère stocker mes modèles dans un répertoire appelé modèles (funny that). Ainsi le chemin serait home / templates / default.
La classe dans toute sa splendeur ci-dessous
<?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);
}
}
?>
-
- <?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);
- }
- }
-
- ?>
-
Tout le monde bien avec moi jusqu'à présent? Great permet de définir certains modèles
header.tpl (dans le dossier par défaut)
<!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>
-
- <!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>
-
There we go, enregistrez le fichier et permet de procéder à home.tpl dans le même répertoire
<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>
-
- <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>
-
So Cool maintenant notre application est faite! J'ai inclus la zone de texte de sorte que vous pouvez voir que cela peut être utilisé dans les formulaires de saisie de données lorsque les données d'édition. < br>
Usage
Eh bien, je parie que vous avez hâte de visionner ce droit? bien, même si vous pas que je vais vous montrer quand même

Supposons notre page php est appelé mypage.php.
La première chose que nous faisons est inclure la classe template
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
-
- 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
-
La prochaine chose que nous faisons est de créer une référence à l'objet modèle (pour ceux qui ont travaillé avec des classes le terme adéquat est instancier une instance de classe Modèle)
$oTemplate = new Template();
-
- $oTemplate = new Template();
-
Bon, maintenant nous avons besoin pour remplir les variables de la page
$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->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";
-
Et nous avons tous fait! Voici la page complète
mypage.php
<?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");
?>
-
- <?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");
- ?>
-
Et que comme on dit dans les classiques, c'est que. Nice clean and simple. Vous pouvez étendre ce d'ici aux quatre coins de la planète (il est bon plat?) Et profitez de temps à faire les choses amusantes comme le codage par opposition à la logique des chaînes de codage HTML!
Conclusion
Ceci est un exemple très simple conçu pour vous permettre de démarrer rapidement. Il ne s'agit en aucun cas une solution globale, mais est destiné à vous aider à comprendre la façon de séparer la logique de ton et la manière de créer de jolis modèles propres, qui permettent un entretien facile et reusage contenu.
Rabid chien.