Epivoila, blog graphisme developpement referencement

Class PHP 5 pour générer des templates HTML

- Ecrit par clement le Jeudi 7 février 2008 | catégorie : Développement web

- Mots clefs : ,

Class PHP 5 pour générer des templates HTML

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";
	}
 
}

Commentaires (5)

Flèche commentaire hello clem..

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

- Ecrit par daweed, le 11 février 2008 à 14:53

Flèche commentaire 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 ?

- Ecrit par clement, le 11 février 2008 à 17:19

Flèche commentaire Tu utilises vraiment une classe comme ca juste pour faire du HTML de base ? Ca t'apporte quoi ? A part un manque de flexibilité ? :)

- Ecrit par Fardeen, le 13 février 2008 à 14:47

Flèche commentaire 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é ?

- Ecrit par clement, le 13 février 2008 à 16:24

Flèche commentaire 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!

- Ecrit par Alexis, le 14 février 2008 à 1:47

Postez votre commentaire




Billets similaires

  • Il n'y a pas de billet similaire.