1. Trang chủ
  2. » Công Nghệ Thông Tin

Pratique de MySQL et PHP- P56 pptx

5 202 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 290,57 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

setBlock nom,nomBloc,nomRempla¸ cant Remplace, dans le contenu de l’entiténom, le bloc nomBloc par une référence à l’entité nomRem-pla¸ cant, et crée une nouvelle entiténomBloc.. Un te

Trang 1

Tableau 6.1 — Méthodes de la classe Template

setFile ( nom,fichier) Charge un fichier dans une entité nomméenom.

On peut également passer en premier paramètre

un tableau contenant la liste des fichiers à charger.

setBlock ( nom,nomBloc,nomRempla¸ cant) Remplace, dans le contenu de l’entiténom, le bloc

nomBloc par une référence à l’entité nomRem-pla¸ cant, et crée une nouvelle entiténomBloc.

assign ( nomCible,nomSource) Place dansnomCible le contenu denomSource

dans lequel les références aux entités ont été rem-placées par leur contenu.

append ( nomCible,nomSource) Ajoute (par concaténation) ànomCiblele contenu

entités ont été remplacées par leur contenu.

Un template est un fragment de code HTML (ou tout format textuel) qui fait référence à des entités Une entité est simplement un nom qui définit une association

entre le code PHP et la sortie HTML

1 dans un template, on trouve les références d’entités, entourées par des

acco-lades ;

2 dans le code PHP, une entité est une variable du composant Vue, à laquelle

on affecte une valeur

Lors de l’exécution, la référence à une entité est substituée par sa valeur, qui peut aussi bien être une simple donnée qu’un fragment HTML complexe C’est le moteur

de templates qui se charge de cette substitution (ou instanciation).

Commençons par un exemple simple Le but est de construire une page en assemblant d’une part un fragment HTML sans aucune trace de PHP, et d’autre part

une partie PHP, sans aucune trace de HTML Le système de templates se chargera de

faire le lien entre les deux Voici tout d’abord la partie HTML (l’extension choisie ici est, par convention, tpl pour « template »)

Exemple 6.3 exemples/ExTemplate.tpl:Le fichier modèle

< ? xml v e r s i o n = " 1 0 " e n c o d i n g = " i s o−8959−1 " ?>

< !DOCTYPE html PUBLIC "−//W3C/ / DTD XHTML 1 0 S t r i c t / / EN"

" h t t p : / / www w3 o r g / TR / xhtml1 /DTD/ xhtml1−s t r i c t dtd ">

<html xmlns= " h t t p : / / www w3 o r g / 1 9 9 9 / xhtml " xml : l a n g = " f r " >

<head>

< t i t l e >Exemple de t e m p l a t e < / t i t l e >

< l i n k r e l = ’ s t y l e s h e e t ’ h r e f = " f i l m s c s s " t y p e = " t e x t / c s s " / >

< / head>

Trang 2

< !−− Exemple s i m p l e d ’ u t i l i s a t i o n d e s t e m p l a t e s

N o t e z qu ’ i l n ’ y a p a s u n e t r a c e d e PHP c i −d e s s o u s

−−>

<h1> { t i t r e _ p a g e } < / h1>

C e t t e p a g e a é t é e n g e n d r é e p a r l e s y s t è m e de t e m p l a t e s

E l l e c o n t i e n t d e s é l é m e n t s s t a t i q u e s , comme l a p h r a s e

que v o u s ê t e s en t r a i n de l i r e Mais on y t r o u v e

é g a l e m e n t d e s p a r t i e s d y n a m i q u e s p r o d u i t e s a v e c

PHP , comme l e nom de v o t r e n a v i g a t e u r : <b> { n o m _ n a v i g a t e u r } < / b>

<p>

On p e u t a u s s i a f f i c h e r l a d a t e e t l ’ h e u r e :

Nous sommes l e <b> { d a t e } < / b> , i l e s t <b> { h e u r e } < / b> h e u r e ( s )

< / p>

<p>

P o u r t a n t l a p e r s o n n e q u i a p r o d u i t l e c o d e HTML

ne c o n n a ỵ t r i e n à PHP , e t l a p e r s o n n e q u i programme en PHP

n ’ a a u c u n e i d é e de l a m i s e en f o r m e c h o i s i e

I n t é r e s s a n t non ?

< / p>

< / body>

< / html>

C’est donc du HTML standard ó certains éléments du texte, les références

d’entités, désignent les parties dynamiques produites par PHP Les références d’entités

sont encadrées par des accolades, comme {titre_page} Voici maintenant la partie PHP

Exemple 6.4 exemples/ExTemplate.php:Le fichier PHP

<? php

/ / E x e m p l e s i m p l e d ’ u t i l i s a t i o n d e s t e m p l a t e s

/ / N o t e z qu ’ i l n ’ y a p a s u n e t r a c e d e HTML c i −d e s s o u s

/ / I n c l u s i o n du m o t e u r d e t e m p l a t e s

r e q u i r e ( " T e m p l a t e php " ) ;

/ / I n s t a n c i a t i o n d ’ un o b j e t d e l a c l a s s e T e m p l a t e

$ t p l = new T e m p l a t e ( " " ) ;

/ / C h a r g e m e n t d a n s l ’ e n t i t é ’ p a g e ’ du f i c h i e r c o n t e n a n t l e

t e m p l a t e

$ t p l−> s e t F i l e ( " page " , " ExTemplate t p l " ) ;

/ / On d o n n e u n e v a l e u r a u x e n t i t é s r é f é r e n c é e s

$ t p l−> t i t r e _ e n t e t e = " Les t e m p l a t e s " ;

$ t p l−>t i t r e _ p a g e = "Un e x e m p l e de t e m p l a t e s " ;

$ t p l−>d a t e = d a t e ( " d /m/ Y" ) ;

Trang 3

$ t p l−>heure = d a t e ( "H" ) ;

$ t p l−>nom_navigateur = $_SERVER [ ’HTTP_USER_AGENT ’ ] ;

/ / La m é t h o d e r e n d e r r e m p l a c e l e s r é f é r e n c e s p a r l e u r v a l e u r , e t

r e n v o i e

/ / l a n o u v e l l e c h a î n e d e c a r a c t è r e s

echo $ t p l−>r e n d e r ( " page " ) ;

? >

Le principe est limpide : on crée un objet de la classe Template en lui indiquant

que les fichiers de modèles sont dans le répertoire courant, « » On commence par charger le contenu du fichierExTemplate.tplet on l’affecte à l’entité page, qui contient donc des références à d’autres entités (date, heure, etc.) Il faut alors donner une valeur à ces entités avec l’opérateur d’affectation ’=’ Par exemple :

$ t p l−>d a t e = d a t e ( " d /m/ Y" ) ;

$ t p l−>heure = d a t e ( "H" ) ;

Maintenant on peut substituer aux références d’entité présentes dans page les

valeurs des entités qu’on vient de définir Cela se fait en appelant la méthode render() Elle va remplacer {date} dans l’entité page par sa valeur, et de même pour les autres références Il ne reste plus qu’à afficher le texte obtenu après substitu-tion On obtient le résultat de la figure 6.4 qui montre qu’avec très peu d’efforts, on

a obtenu une séparation complète de PHP et de HTML

Figure 6.4 — Affichage du document résultat

Trang 4

Avant d’instancier un template, chaque entité qui y est référencée doit se voir affecter une valeur Comme le montre l’exemple ci-dessus, il existe trois façons de créer des entités et de leur affecter une valeur :

1 on charge un fichier avec setFile(), et on place son contenu dans une entité dont on fournit le nom ;

2 on effectue une simple affectation, comme dans $vue->entite = valeur; ;

3 on instancie un template, et on affecte le résultat à une entité ; pour cela on peut utiliser assign() qui remplace l’entité-cible, ou append() qui conca-tène la nouvelle valeur à celle déjà existant dans l’entité-cible

6.3.2 Combiner des templates

Un moteur de templates serait bien faible s’il ne fournissait pas la possibilité de combiner des fragments pour créer des documents complexes La combinaison des templates repose sur le mécanisme de remplacement d’entités Il suffit de considérer que l’instanciation d’un template est une chaîne de caractères qui peut être constituer

la valeur d’une nouvelle entité

Prenons un autre exemple pour montrer la combinaison de templates On veut produire un document affichant une liste dont on ne connaît pas à l’avance le nombre d’éléments La figure 6.5 montre le résultat souhaité, avec 5 éléments dans la liste

Figure 6.5 — Template contenant une liste

On ne peut pas obtenir ce résultat avec un seul template, parce qu’un des frag-ments (la première phrase) apparaît une seule fois, et l’autre partie (les éléfrag-ments de

la liste) plusieurs fois La solution est de combiner deux templates Voici le premier,

le parent :

Exemple 6.5 exemples/Parent.tpl:Template à instancier une fois

< ? xml v e r s i o n = " 1 0 " e n c o d i n g = " i s o−8959−1 " ?>

< !DOCTYPE html PUBLIC "−//W3C/ / DTD XHTML 1 0 S t r i c t / / EN"

" h t t p : / / www w3 o r g / TR / xhtml1 /DTD/ xhtml1−s t r i c t dtd ">

Trang 5

<html xmlns= " h t t p : / / www w3 o r g / 1 9 9 9 / xhtml " xml : l a n g = " f r " >

<head>

< t i t l e >Exemple de t e m p l a t e s < / t i t l e >

< l i n k r e l = ’ s t y l e s h e e t ’ h r e f = " f i l m s c s s " t y p e = " t e x t / c s s " / >

< / head>

<body>

< d i v >

Ce t e m p l a t e e s t un < i > p a r e n t < / i >

q u i d o i t ê t r e combiné a v e c un a u t r e t e m p l a t e , < i > e n f a n t < / i > ,

c e d e r n i e r p o u v a n t ê t r e i n s t a n c i é p l u s i e u r s f o i s

On p l a c e une r é f é r e n c e à une e n t i t é < i > e n f a n t s < / i > , c i−d e s s o u s

,

p o u r i n c l u r e l a l i s t e de c e s i n s t a n c i a t i o n s

< u l >

{ e n f a n t s }

< / u l >

< / d i v >

< / body>

< / html>

Il contient la partie du document qui n’apparaỵt qu’une seule fois La référence à l’entité enfants est destinée à être remplacée par la liste des éléments Le second template représente un seul de ces éléments : on va ensuite concaténer les instancia-tions

Exemple 6.6 exemples/Enfant.tpl:Template à instancier autant de fois que nécessaire

< l i >

C e c i e s t l e t e m p l a t e < i > e n f a n t < / i > , a v e c l e numéro { numero }

< / l i >

Maintenant on peut effectuer la combinaison Pour l’essentiel, on instancie autant de fois que nécessaire le template enfant, et on concatène ces instanciations dans une entité enfants Au moment ó on applique la méthode render(), la valeur d’enfants va se substituer à la référence vers cette entité dans parent, et le tour est joué

Exemple 6.7 exemples/ExTemplateComb.php:Le code PHP pour combiner les templates

<? php

/ / E x e m p l e d e c o m b i n a i s o n d e t e m p l a t e s

r e q u i r e ( " T e m p l a t e php " ) ;

/ / I n s t a n c i a t i o n d ’ un o b j e t d e l a c l a s s e T e m p l a t e

$vue = new T e m p l a t e ( " " ) ;

/ / C h a r g e m e n t d e s d e u x t e m p l a t e s

$vue−> s e t F i l e ( " p a r e n t " , " P a r e n t t p l " ) ;

Ngày đăng: 06/07/2014, 00:20