Une class PHP 5 qui sert à générer des pages HTML. Ce n’est pas très difficile à comprendre pour quelqu’un qui a un minimum de connaissance en PHP et en programmation orientée objet (POO). L’objectif étant de faciliter et d’automatiser la création de gabarit de page HTML.
Je fais mes premières mains en PHP, donc rien d’exceptionnel ici. Mais cette class s’avère utile pour moi donc je la publie, si ça peut servir à quelqu’un… Je publierai certainement une class pour parser des RSS sur laquelle je travaille en ce moment, mais on en est pas là, Alexis va devoir me filer un coup de main avant !
Si vous l’utilisez, un petit lien vers cette page serait le bienvenue. La source est téléchargeable ici au format zip ou au format 7z.
Exemple d’utilisation de la class :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | //Inclure la class require_once('../class/Template.class.php'); //Nouvelle objet Template $template = new Template(); //Déclaration du Dotctype $template->setDoctype('xhtmlstrict'); //Déclaration du Charset $template->setCharset('iso-8859-1'); //Déclaration du Title $template->setTitle('title'); //Déclaration de Meta Title $template->setMetaTitle('Metatitle'); //Déclaration de Meta Keywords $template->setMetaKeysWords('keywords'); //Déclaration de Meta Description $template->setMetaDescription('description'); //Déclaration du favicon $template->setIcon('icon.gif'); //Déclaration des fichiers CSS en passant un Tableau en paramètre $template->setCss(Array('fichier1.css','fichier2.css','fichier3.css')); //Déclaration des fichiers javascript en passant un Tableau en paramètre $template->setJavascript(Array('fichier1.js','fichier2.js','fichier3.js')); //Déclaration de l'url du RSS et de son Titre $template->setRss('rssUrl','rssTitle'); //Fermer le header $template->setCloseHeader(); //Contenu du site /* :::::::::::::::::::blablabla::::::::::::::::: */ //Fermer la page $template->setFooter(); |
Le résultat en HTML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fra"> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <title>title</title> <meta name="title" content="Metatitle" /> <meta name="keywords" content="keywords" /> <meta name="description" content="description" /> <link rel="shortcut icon" href="icon.gif" /> <style type="text/css"> @import url("fichier1.css"); @import url("fichier2.css"); @import url("fichier3.css"); </style> <script type="text/javascript" src="fichier1.js"></script> <script type="text/javascript" src="fichier2.js"></script> <script type="text/javascript" src="fichier3.js"></script> <link type="application/rss+xml" rel="alternate" href="rssUrl" title="rssTitle" /> </head> <body> </body> </html> |
La class PHP.
Attention c’est du PHP 5, assurez-vous que votre serveur le supporte. Je ne me suis absolument pas soucié de la rétro-compatibilité avec PHP 4.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 | class Template { //DECLARATION DES VARIABLES private $dtd; private $charset; private $title; private $metaTitle; private $metaKeywords; private $metaDescription; private $icon; private $css ; private $javascript; private $rssUrl; private $rssTitle; private $retour = ""; //CONSTRUCTEUR public function __construct() { $this->dtd = $dtd; $this->charset = $charset; $this->title = $title; $this->metaTitle = $metaTitle; $this->metaKeywords = $metaKeywords; $this->metaDescription = $metaDescription; $this->shortcutIcon = $shortcutIcon; $this->styleSheet = $styleSheet; $this->rssUrl = $rssUrl; $this->rssTitle = $rssTitle; $this->javascript = $javascript; } /*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: SETTEURS :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/ // SET DTD public static function setDoctype($dtd) { switch (strtolower($dtd)) { case "xhtmlstrict": $retour ='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'; $retour.= self::retourCharriot(); $retour.='<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fra">'; break; case "xhtmltransitional": $retour ='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'; $retour.= self::retourCharriot(); $retour.='<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fra">'; break; case "htmlstrict": $retour ='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">'; $retour.= self::retourCharriot(); $retour.='<html>'; break; case "htmltransitional": $retour ='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">'; $retour.= self::retourCharriot(); $retour.='<html>'; break; case "": $retour ='::::::::::::::::::DTD NON RECONNUE::::::::::::::::::'; $retour.= self::retourCharriot(); $retour.='::::::::::::::::::CHOIX POSSIBLES::::::::::::::::::'; $retour.= self::retourCharriot(); $retour.='::::::::::::::::::xhtmlstrict,xhtmltransitional,htmlstrict,htmltransitional::::::::::::::::::'; break; } $retour.= self::retourCharriot(); echo $retour; } //SET CHARSET public function setCharset($charset) { switch (strtolower($charset)) { case "iso-8859-1": $retour = '<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />'; break; case "iso-8859-15": $return = '<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15" />'; break; case "utf8": $return = '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />'; break; case "": $retour ='::::::::::::::::::CHARSET NON RECONNUE::::::::::::::::::'; $retour.= self::retourCharriot(); $retour.='::::::::::::::::::CHOIX POSSIBLES::::::::::::::::::'; $retour.= self::retourCharriot(); $retour.='::::::::::::::::::iso-8859-1,iso-8859-15,utf8::::::::::::::::::'; break; } $retour.= self::retourCharriot(); echo $retour; } //SET TITLE public static function setTitle($title) { $retour = '<title>'.$title.'</title>'; $retour.= self::retourCharriot(); echo $retour; } //SET METATITLE public static function setMetaTitle($metaTitle) { $retour = '<meta name="title" content="'.$metaTitle.'" />'; $retour.= self::retourCharriot(); echo $retour; } //SET METAKEYWORDS public static function setMetaKeysWords($metaKeywords) { $retour = '<meta name="keywords" content="'.$metaKeywords.'" />'; $retour.= self::retourCharriot(); echo $retour; } //SET METADESCRIPTION public static function setMetaDescription($metaDescription) { $retour = '<meta name="description" content="'.$metaDescription.'" />'; $retour.= self::retourCharriot(); echo $retour; } //SHORTCUTICON public static function setIcon($icon) { $retour = '<link rel="shortcut icon" href="'.$icon.'" />'; $retour.= self::retourCharriot(); echo $retour; } //SET CSS public static function setCss($css) { $retour = '<style type="text/css">'; $retour.= self::retourCharriot(); for($i=0;$i<count($css);$i++) { $retour .= '@import url("'.$css[$i].'");'; $retour .= self::retourCharriot(); } $retour.= '</style>'; $retour.= self::retourCharriot(); echo $retour; } //SET JAVASCRIPT public static function setJavascript($javascript) { for($i=0;$i<count($javascript);$i++) { $retour.= '<script type="text/javascript" src="'.$javascript[$i].'"></script>'; $retour.= self::retourCharriot(); } echo $retour; } //SET RSS public static function setRss($rssUrl, $rssTitle) { $retour = '<link type="application/rss+xml" rel="alternate" href="'.$rssUrl.'" title="'.$rssTitle.'" />'; $retour.= self::retourCharriot(); echo $retour; } //SET CLOSEHEADER public static function setCloseHeader() { $retour = '</head>'; $retour .= self::retourCharriot(); $retour .= '<body>'; $retour .= self::retourCharriot(); echo $retour; } //SET CLOSEFOOTER public static function setFooter() { $retour = '</body>'; $retour .= self::retourCharriot(); $retour .= '</html>'; $retour .= self::retourCharriot(); echo $retour; } /*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: GETTEURS :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/ //GET DOCTYPE public function getDoctype($dtd) { echo $this->dtd; } //GET CHARSET public function getCharset($charset) { echo $this->charset; } //GET TITLE public function getTitle($title) { echo $this->title; } //GET METATITLE public function getMetaTitle($metaTitle) { echo $this->metaTitle; } //GET METAKEYSWORDS public function getMetaKeysWords($metaKeywords) { echo $this->metaKeywords; } //GET METADESCRIPTION public function getMetaDescription($metaDescription) { echo $this->metDescription; } //GET ICON public function getIcon($icon) { echo $this->icon; } //GET CSS public function getCss($css) { for($i=0;$i<count($css);$i++) { echo $this->$css[$i]; } } //GET JAVASCRIPT public function getJavascript($javascript) { for($i=0;$i<count($javascript);$i++) { echo $this->$javascript[$i]; } } //GET RSS public function getRss($rss) { echo $this->rssUrl; echo $this->rssTitle; } /*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: PRIVATE FONTIONS DIVERSES :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/ // RETOUR A LA LIGNE private static function retourCharriot() { return "\n"; } } |
Yop Dav
Ouep, pas con l'idée du mode debbug. Mais bon tu crois vraiment que pour une class aussi simple ca vaut le coup ?
Tu utilises vraiment une classe comme ca juste pour faire du HTML de base ? Ca t'apporte quoi ? A part un manque de flexibilité ? :)
Ben je trouve ca pratique pour des petits projets de générer du HTML de cette manière. Mais je me trompe peu être, je fais jamais que mes premiers pas en PHP, pourquoi un manque de flexibilité ?
C'est sûr que tu perds un petit peu en flexibilité (par exemple tu ne peux pas modifier le fichier CSS à charger une fois que t'as envoyé le head) Mais je trouve que c'est une super initiative, j'utilise une classe de ce genre pour développer des administrations, ça simplifie grandement la vie!
Il manque un truc a mon avis a ta classe, c'est un debbuggueur, qui permette en mode debbug d'afficher les éléments non renseignés. par ex, un mode debbug 1 qui affiche tout les éléments non renseignés,un mode debbug a 2 qui affiche tous les éléments MINIMUM non renseignés un mode debbug a 3 qui affiche tous les éléments pour le référencement non renseigné (tiens ça me rappel vaguement le système de template que j'avais fait y a qques temps )
voilou. bonne continuation