-
Notifications
You must be signed in to change notification settings - Fork 164
Expand file tree
/
Copy pathbasic-syntax.xml
More file actions
296 lines (279 loc) · 9.57 KB
/
basic-syntax.xml
File metadata and controls
296 lines (279 loc) · 9.57 KB
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
285
286
287
288
289
290
291
292
293
294
295
296
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 0e618211e53c66f33762be225a4d57c08ef4b2f7 Maintainer: yannick Status: ready -->
<!-- Reviewed: no -->
<!-- CREDITS: DavidA -->
<chapter xml:id="language.basic-syntax" xmlns="http://docbook.org/ns/docbook" annotations="interactive">
<title>La syntaxe de base</title>
<sect1 xml:id="language.basic-syntax.phptags">
<title>Balises PHP</title>
<para>
Lorsque PHP traite un fichier, il reconnaît les balises d'ouverture et
de fermeture, <literal><?php</literal> et <literal>?></literal>, pour
définir les limites de l'exécution du code PHP. Le contenu en dehors des
balises est ignoré par l'analyseur PHP, permettant à PHP de s'intégrer
de manière transparente dans divers types de documents.
</para>
<para>
Un caractère d'espace (espace, tabulation, ou nouvelle ligne) doit suivre
<literal><?php</literal> pour assurer une séparation correcte des jetons.
Omettre cet espace blanc entraînera une erreur de syntaxe.
</para>
<para>
PHP inclut également la balise courte echo <literal><?=</literal>,
qui est un raccourci pour <code><?php echo</code>.
</para>
<para>
<example>
<title>Balises d'ouverture et de fermeture PHP</title>
<programlisting role="php">
<![CDATA[
1. <?php echo 'Si vous voulez intégrer du code PHP dans des documents XHTML ou XML, utilisez ces balises'; ?>
2. Vous pouvez utiliser la balise courte pour <?= 'écrire ce texte' ?>.
Est équivalent à <?php echo 'écrire ce texte' ?>.
3. <? echo 'ce code est entre des balises courtes, mais ne fonctionnera '.
'que si short_open_tag est activé'; ?>
]]>
</programlisting>
</example>
</para>
<para>
Les balises courtes (troisième exemple) sont disponibles par défaut,
mais peuvent être désactivées soit via l'option
<link linkend="ini.short-open-tag">short_open_tag</link>
du fichier de configuration &php.ini;, ou sont désactivées par défaut si PHP
est compilé avec l'option <option>--disable-short-tags</option>.
</para>
<para>
<note>
<para>
Comme les balises courtes peuvent être désactivées il est recommandé de
seulement utiliser les balises normales (<code><?php ?></code> et
<code><?= ?></code>) pour maximiser la compatibilité.
</para>
</note>
</para>
<para>
Si un fichier se termine avec du code PHP, il est préférable de ne pas placer
la balise de fermeture à la fin du fichier. Ceci permet d'éviter d'oublier
un espace ou une nouvelle ligne après la balise de fermeture de PHP, ce qui
causerait des effets non voulus car PHP commencera à afficher la sortie,
ce qui n'est souvent pas le cas désiré.
</para>
<para>
<example>
<title>Fichier contenant uniquement du code PHP</title>
<programlisting role="php">
<![CDATA[
<?php
echo "Bonjour le monde\n";
// ... encore du code
echo "Dernière instruction\n";
// le script se termine ici, sans la balise de fermeture PHP
]]>
</programlisting>
</example>
</para>
</sect1>
<sect1 xml:id="language.basic-syntax.phpmode">
<title>Échappement depuis du HTML</title>
<para>
Tout ce qui se trouve en dehors d'une paire de balises ouvrantes/fermantes
est ignoré par l'analyseur PHP, ce qui permet d'avoir des fichiers PHP
mixant les contenus. Ceci permet à PHP d'être contenu dans des documents
HTML, pour créer par exemple des templates.
</para>
<para>
<example>
<title>Intégrer du PHP dans du HTML</title>
<programlisting role="php">
<![CDATA[
<p>Ceci sera ignoré par PHP et affiché au navigateur.</p>
<?php echo 'Alors que ceci sera analysé par PHP.'; ?>
<p>Ceci sera aussi ignoré par PHP et affiché au navigateur.</p>
]]>
</programlisting>
</example>
</para>
<para>
Ceci fonctionne comme prévu parce que lorsque l'interpréteur PHP rencontre
la balise fermante ?>, il commence simplement à afficher ce qu'il
rencontre (mis à part la nouvelle ligne qui est immédiatement suivie : voir
l'<link linkend="language.basic-syntax.instruction-separation">instruction
de séparation</link>) jusqu'à ce qu'il rencontre une autre balise ouvrante
même si PHP se trouve au milieu d'une instruction conditionnelle, auquel cas,
l'interpréteur va déterminer la condition à prendre en compte avant de prendre
une décision sur ce qui doit être affiché.
Voir le prochain exemple.
</para>
<para>
Utilisation de structures avec des conditions
<example>
<title>Échappement avancé en utilisant des conditions</title>
<programlisting role="php">
<![CDATA[
<?php if ($expression == true): ?>
Ceci sera affiché si l'expression est vraie.
<?php else: ?>
Sinon, ceci sera affiché.
<?php endif; ?>
]]>
</programlisting>
</example>
Dans cet exemple, PHP va ignorer les blocs où la condition n'est pas remplie,
même s'ils sont en dehors des balises ouvrantes/fermantes de PHP. PHP
va les ignorer suivant la condition vu que l'interpréteur PHP va passer
les blocs contenant ce qui n'est pas rempli par la condition.
</para>
<para>
Pour afficher de gros blocs de texte, il est plus efficace de sortir
du mode d'analyse de PHP plutôt que d'envoyer le texte via la fonction
<function>echo</function> ou
<function>print</function>.
</para>
<para>
<note>
<para>
Si PHP est intégré dans un document XML ou XHTML, la balise PHP
standard <code><?php ?></code> doit être utilisée pour rester
conforme aux standards.
</para>
</note>
</para>
</sect1>
<sect1 xml:id="language.basic-syntax.instruction-separation">
<title>Séparation des instructions</title>
<para>
Comme en C ou en Perl, PHP requiert que les instructions soient terminées
par un point-virgule à la fin de chaque instruction. La balise
fermante d'un bloc de code PHP implique automatiquement un point-virgule ;
il n'est donc pas nécessaire d'utiliser un point-virgule
pour terminer la dernière ligne d'un bloc PHP. La balise fermante du bloc
englobera la ligne suivante, si elle existe.
</para>
<para>
<example>
<title>Exemple montrant que la balise fermante englobe la nouvelle ligne qui suit</title>
<programlisting role="php">
<![CDATA[
<?php echo "Some text"; ?>
No newline
<?= "But newline now" ?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
Some textNo newline
But newline now
]]>
</screen>
</example>
</para>
<para>
<example>
<title>Exemples d'entrée et de sortie du parseur PHP</title>
<programlisting role="php">
<![CDATA[
<?php
echo "Ceci est un test\n";
?>
<?php echo "Ceci est un test\n" ?>
<?php echo "La dernière balise fermante a été omise\n";
]]>
</programlisting>
</example>
</para>
<para>
<note>
<para>
La balise fermante d'un bloc PHP à la fin d'un fichier est optionnelle,
et parfois, il est utile de l'omettre lors de l'utilisation de la fonction
<function>include</function> ou
de la fonction <function>require</function>,
car les espaces non désirés n'apparaîtront pas à la fin des fichiers, et ainsi,
il sera toujours possible d'ajouter des en-têtes à la réponse plus tard. C'est utile
également lors de l'utilisation de l'affichage du buffer pour éviter de
voir des espaces blancs ajoutés à la fin des parties générées par les fichiers
inclus.
</para>
</note>
</para>
</sect1>
<sect1 xml:id="language.basic-syntax.comments">
<title>Commentaires</title>
<para>
PHP supporte les commentaires de type C, C++ et Shell Unix (aussi
appelé style Perl). Par exemple :
</para>
<para>
<example>
<title>Commentaires</title>
<programlisting role="php">
<![CDATA[
<?php
echo "Ceci est un test\n"; // Ceci est un commentaire sur une seule ligne, style c++
/* Ceci est un commentaire sur
plusieurs lignes */
echo "Ceci est un autre test\n";
echo "Et un test final\n"; # Ceci est un commentaire style shell sur une seule ligne
?>
]]>
</programlisting>
</example>
</para>
<simpara>
Les commentaires sur une seule ligne ne commentent que jusqu'à la fin
de la ligne du bloc PHP courant.
Ceci signifie que le code HTML après <literal>// ... ?></literal>
ou après <literal># ... ?></literal> SERA affiché :
?> terminera le mode PHP et retournera en mode HTML, et
<literal>//</literal> ou <literal>#</literal> n'influencera pas cela.
</simpara>
<para>
<example>
<title>Les commentaires vont jusqu'à la fin de la ligne</title>
<programlisting role="php">
<![CDATA[
<h1>Ceci est un exemple <?php # echo 'simple';?></h1>
<p>La ligne ci-dessus affichera 'Ceci est un exemple'.</p>
]]>
</programlisting>
</example>
</para>
<simpara>
Les commentaires style 'C' commentent jusqu'à ce que le premier <literal>*/</literal>
soit rencontré. Il faut faire attention aux commentaires style 'C'
nichés dans de gros blocs lors de la mise en commentaire.
</simpara>
<para>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
/*
echo 'Ceci est un test'; /* Ce commentaire posera un problème */
*/
?>
]]>
</programlisting>
</informalexample>
</para>
</sect1>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->