/
utilisation.gtw
120 lines (82 loc) · 3.86 KB
/
utilisation.gtw
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
~~LANG:EN@enman:daos/use~~
Vous avez vu comment décrire dans un fichier XML un DAO (voir
[[fichier_de_base]]). Ce fichier, vous devez le stocker dans un répertoire
@@F@daos/@@ d'un module et le nommer comme ceci : @@F@nom.dao.xml@@. //nom// est
le nom de votre DAO.
Souvenez-vous qu'en fait, à partir d'un fichier DAO, vous définissez deux objets
PHP :
* un objet DAO qui est une factory, basé sur la classe @@C@jDaoFactoryBase@@
: elle permet de récupérer, insérer, modifier, effacer un ou plusieurs
enregistrements. Elle propose des méthodes de base, mais contient aussi les
méthodes que vous avez définis dans le fichier XML dans la section
@@E@<factory>@@.
* un objet record DAO, basé sur la classe @@C@jDaoRecordBase@@, qui
représente un enregistrement et dont vous avez décrit les propriétés dans
la section @@E@<record>@@.
===== Récupérer la factory =====
Pour récupérer ces objets il faut passer par l'objet @@C@jDao@@ qui propose
diverses méthodes statiques :
* @@M@get()@@ : permet d'obtenir une factory. Renvoie toujours la même
instance (utilise un singleton)
* @@M@create()@@ : permet d'obtenir une nouvelle instance d'une factory.
Rarement utile.
* @@M@createRecord()@@ : permet d'obtenir un objet DAO record vide.
* @@M@createConditions()@@ : permet d'obtenir un objet @@C@jDAOConditions@@
qui permet d'indiquer des conditions de sélection pour récupérer un
ensemble d'objets record.
@@M@get()@@, @@M@create()@@ et @@M@createRecord()@@ prennent tous en argument un
sélecteur de fichier DAO et un deuxième paramètre facultatif qui est le nom du
[[/bd|profil jDb]] à utiliser (si paramètre absent, il prendra celui par
défaut).
Si le profil jDb utilisé spécifie un préfixe de table, alors toutes les tables
indiquées dans le DAO verront leur nom préfixé par la valeur de ce paramètre.
En admettant qu'il y ait un fichier DAO @@F@foo.dao.xml@@ dans le module bar :
<code php>
$maDao = jDao::get("bar~foo");
// ou si cette ligne de code est dans un fichier du module bar :
$maDao = jDao::get("foo");
$monRecord = jDao::createRecord("foo");
</code>
@@V@$maDao@@ contient une factory de foo, et @@V@$monRecord@@ un enregistrement
vide de type //foo//.
===== Créer, modifier, effacer un enregistrement =====
Les méthodes @@M@insert()@@, @@M@update()@@, et @@M@delete()@@ de la factory
sont faites pour ça. Aux deux premières, vous indiquez un record. Pour
@@M@delete()@@, vous indiquez les clés de l'enregistrement.
==== Création ====
Il faut récupérer un nouvel objet record, le remplir, et ensuite appeler la méthode @@M@insert()@@
<code php>
// instanciation de la factory
$maFactory = jDao::get("foo");
// creation d'un record correspondant au dao foo
$record = jDao::createRecord("foo");
// on remplit le record
$record->champ1 = "hello";
$record->champ2 = "...";
// on le sauvegarde dans la base
$maFactory->insert($record);
</code>
S'il y a des champs de type autoincrement, les propriétés correspondantes dans
@@V@$record@@ seront mises à jour avec la nouvelle valeur.
==== Modification ====
Le processus est le suivant : on récupère un objet record, on modifie ses
propriétés, et on appelle la méthode @@M@update()@@.
<code php>
// instanciation de la factory
$maFactory = jDao::get("foo");
// récupération du record dont l'identifiant est 3
$record = $maFactory->get(3);
// on modifie le record
$record->champ1 = "hello";
$record->champ2 = "...";
// on le sauvegarde dans la base
$maFactory->update($record);
</code>
==== Destruction ====
Il suffit d'appeler la méthode @@M@delete()@@ en donnant l'id du record à détruire
<code php>
// instanciation de la factory
$maFactory = jDao::get("foo");
// destruction du record dont l'identifiant est 3
$maFactory->delete(3);
</code>