-
Notifications
You must be signed in to change notification settings - Fork 165
Expand file tree
/
Copy pathbasic-syntax.xml
More file actions
335 lines (324 loc) · 12 KB
/
basic-syntax.xml
File metadata and controls
335 lines (324 loc) · 12 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
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 48d21bbd423859b8cb97b3db4bb95b5de4ae109d Maintainer: yannick Status: ready -->
<!-- Reviewed: yes -->
<chapter xml:id="language.basic-syntax" xmlns="http://docbook.org/ns/docbook">
<title>La syntaxe de base</title>
<sect1 xml:id="language.basic-syntax.phptags">
<title>Balises PHP</title>
<para>
Lorsque PHP traite un fichier, il cherche les balises d'ouverture et
de fermeture (<literal><?php</literal> et <literal>?></literal>)
qui délimitent le code qu'il doit interpréter. De cette
manière, cela permet à PHP d'être intégré dans toutes sortes de documents,
car tout ce qui se trouve en dehors des balises ouvrantes / fermantes de
PHP est ignoré.
</para>
<para>
PHP autorise aussi la balise ouvrante dite "courte" <literal><?</literal> (que nous vous conseillons vivement de ne pas
utiliser car elle n'est disponible que lors de l'activation
de la directive de configuration <link linkend="ini.short-open-tag">short_open_tag</link>
du &php.ini;, ou si PHP a été configuré avec l'option
<option>--enable-short-tags</option>).
</para>
<para>
<table>
<title>Historiques</title>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>7.0.0</entry>
<entry>
Les balises ASP <% , %> , <%= , et les balises script <script language=php>
ont été supprimées de PHP.
</entry>
</row>
<row>
<entry>5.4.0</entry>
<entry>
La balise <?= est toujours disponible suivant la configuration de l'option INI
short_open_tag.
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
<para>
Si un fichier est purement 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 ce qui est désiré.
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
echo "Bonjour le monde !";
// ... encore du code
echo "Dernière instruction";
// le script se termine ici, sans la balise de fermeture PHP
]]>
</programlisting>
</informalexample>
</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.
<example>
<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>
Ceci fonctionne comme prévu parce que lorsque l'interpréteur PHP rencontre
la balise fermante ?>, il commence simplement à afficher ce qu'il
rencontre (mise à part s'il est immédiatement suivi d'une nouvelle ligne
: 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, au quel cas,
l'interpréteur va déterminer la condition à prendre en compte avant de prendre
une décision sur ce qui doit être afficher.
Voir le prochain exemple.
</para>
<para>
Utilisation de structures avec des conditions
<example>
<title>Echappement avancé en utilisant des conditions</title>
<programlisting role="php">
<![CDATA[
<?php if ($expression == true): ?>
Ceci sera affiché si l'expression est vrai.
<?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 si 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 remplie 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>
Il y a quatre paires différentes de balises ouvrantes / fermantes qui
peuvent être utilisées dans PHP. Deux de ces balises, <?php ?> et
<script language="php"> </script>, sont toujours disponibles.
Les deux autres sont les balises courtes et les balises du style
<productname>ASP</productname>, et peuvent être activées ou désactivées
depuis le fichier de configuration &php.ini;. Cependant, malgré le fait que
des personnes trouvent les balises courtes et les balises du style
<productname>ASP</productname> pratiques, elles sont moins portables
et donc, généralement, non recommandées.
<note>
<para>
Notez également que si vous intégrez PHP dans des documents XML
ou XHTML, vous devez utiliser les balises <?php ?> pour rester
conforme aux standards.
</para>
</note>
</para>
<para>
<example>
<title>Balises d'ouvertures et de fermetures PHP</title>
<programlisting role="php">
<![CDATA[
1. <?php echo 'Si vous voulez intégrez du code PHP dans des documents XHTML ou XML, utilisez ces balises'; ?>
2. <script language="php">
echo 'quelques éditeurs (comme FrontPage)
n\'aiment pas traiter des d\'instructions à l\'intérieur de ces balises';
</script>
3. <? echo 'ce code est entre des balises courtes'; ?>
Le code suivant <?= 'du texte' ?> est un raccourci pour <? echo 'du texte' ?>
4. <% echo 'Vous pouvez optionnellement utiliser les balises ASP-style'; %>
Le code suivant <%= $variable; %> est un raccourci pour <% echo $variable; %>
]]>
</programlisting>
</example>
</para>
<para>
Bien que les balises vues dans les exemples un et deux sont toutes les
deux disponibles, l'exemple un est le plus communément utilisé
et le plus recommandé des deux.
</para>
<para>
Les balises courtes (troisième exemple) ne sont disponibles que s'elles ont
été activées via la directive
<link linkend="ini.short-open-tag">short_open_tag</link>
du fichier de configuration &php.ini;, ou si PHP a été configuré
avec l'option <option>--enable-short-tags</option>.
</para>
<para>
Les balises du style <productname>ASP</productname> (quatrième exemple)
sont uniquement disponibles lorsqu'elles sont activées via la directive
<link linkend="ini.asp-tags">asp_tags</link> du fichier de configuration
&php.ini;.
</para>
<para>
<note>
<para>
L'utilisation des balises courtes doit être bannie lors de développements
d'applications ou de bibliothèques qui sont destinées à être
redistribuées, ou déployées sur des serveurs qui ne sont pas sous votre
contrôle, car les balises courtes peuvent ne pas être supportées sur le
serveur cible. Pour réaliser du code portable, qui peut être redistribué,
n'utilisez jamais les balises courtes.
</para>
</note>
<note>
<para>
En PHP 5.2 et antérieures, l'analyseur n'autorisait pas
un tag ouvrant <literal><?php</literal> comme seul
élément d'une page. Ceci est permis à compter de la version
5.3 de PHP lorsqu'il y a un ou plusieurs espaces après
la balise ouvrante.
</para>
</note>
<note>
<para>
Depuis PHP 5.4, le tag echo court <literal><?=</literal> est toujours reconnu
et valide, suivant la configuration de l'option
<link linkend="ini.short-open-tag">short_open_tag</link>.
</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 ; vous n'avez donc pas besoin d'utiliser un point-virgule
pour terminer la dernière ligne d'un bloc PHP. La balise fermante
d'un bloc inclura immédiatement un caractère de nouvelle ligne si un
est présent.
<example>
<title>Séparation des instructions</title>
<programlisting role="php">
<![CDATA[
<?php
echo 'Ceci est un test';
?>
<?php echo 'Ceci est un test' ?>
<?php echo 'Oubli de la balise fermante';
]]>
</programlisting>
</example>
<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,
vous pourrez toujours ajouter des en-têtes à la réponse plus tard. C'est utile
également si vous voulez utiliser l'affichage du buffer et que vous ne voulez pas
voir d'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 :
<example>
<title>Exemple de commentaire</title>
<programlisting role="php">
<![CDATA[
<?php
echo 'Ceci est un test'; // Ceci est un commentaire sur une seule ligne, style c++
/* Ceci est un commentaire sur
plusieurs lignes */
echo 'Ceci est un autre test';
echo 'Et un test final'; # 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.
Si la directive de configuration <link linkend="ini.asp-tags">asp_tags</link>
est activée, ce comportement sera identique avec <literal>// %></literal> et
<literal># %></literal>.
Cependant, la balise <literal></script></literal> ne terminera pas le mode PHP dans
un commentaire d'une seule ligne.
</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é. Vous devriez faire attention aux commentaires style 'C'
nichés dans de gros blocs lorsque vous les commentez.
</simpara>
<para>
<example>
<title>Les commentaires de type C</title>
<programlisting role="php">
<![CDATA[
<?php
/*
echo 'Ceci est un test'; /* Ce commentaire posera un problème */
*/
?>
]]>
</programlisting>
</example>
</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:
-->