-
Notifications
You must be signed in to change notification settings - Fork 43
/
Copy pathbasic-syntax.xml
281 lines (270 loc) · 9.63 KB
/
basic-syntax.xml
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
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 8ad67ee7a8cc6c9d7a4cf78065cab87bf2e6c08e Maintainer: cmb Status: ready -->
<!-- Reviewed: no -->
<chapter xml:id="language.basic-syntax" xmlns="http://docbook.org/ns/docbook">
<title>Grundlagen der Syntax</title>
<sect1 xml:id="language.basic-syntax.phptags">
<title>PHP-Tags</title>
<para>
Wenn PHP eine Datei verarbeitet, erkennt es die öffnenden und schließenden
Tags <literal><?php</literal> und <literal>?></literal>, um den
Bereich abzugrenzen, in dem PHP-Code ausgeführt wird. Inhalte außerhalb
dieser Tags werden vom PHP-Parser ignoriert, so dass PHP nahtlos in
verschiedene Dokumenttypen integriert werden kann.
</para>
<para>
Nach <literal><?php</literal> muss ein Whitespace-Zeichen (Leerzeichen,
Tabulator oder Zeilenumbruch) folgen, um eine korrekte Trennung der Token
zu gewährleisten.
Wird dieses Zeichen weggelassen, führt dies zu einem Syntaxfehler.
</para>
<para>
PHP kennt außerdem den kurzen Ausgabe-Tag <literal><?=</literal>, der
eine Kurzform für <code><?php echo</code> ist.
</para>
<para>
<example>
<title>Öffnende und schließende PHP-Tags</title>
<programlisting role="php">
<![CDATA[
1. <?php echo 'Verwenden Sie diese Tags, wenn Sie PHP-Code in XHTML- oder
XML-Dokumenten ausgeben wollen'; ?>
2. Sie können den kurzen echo-Tag für die
<?= 'Ausgabe dieser Zeichenkette' ?> verwenden.
Es ist äquivalent zur <?php echo 'Ausgabe dieser Zeichenkette' ?>.
3. <? echo 'dieser Code ist innerhalb von kurzen Tags, wird aber nur '.
'funktionieren, wenn short_open_tag aktiviert ist'; ?>
]]>
</programlisting>
</example>
</para>
<para>
Kurze Tags (Beispiel drei) sind standardmäßig verfügbar, können aber
entweder über die Anweisung
<link linkend="ini.short-open-tag">short_open_tag</link> der
&php.ini;-Konfigurationsdatei deaktiviert werden oder sind standardmäßig
deaktiviert, wenn PHP mit der Konfigurationsanweisung
<option>--disable-short-tags</option> gebaut wird.
</para>
<para>
<note>
<para>
Da kurze Tags deaktiviert werden können, wird für maximale
Kompatibilität empfohlen, nur die normalen Tags (<code><?php
?></code> und <code><?= ?></code>) zu verwenden.
</para>
</note>
</para>
<para>
Wenn eine Datei nur PHP-Code enthält, ist es besser, den schließenden
PHP-Tag am Ende der Datei wegzulassen. Dies verhindert, dass versehentlich
Leerzeichen oder neue Zeilen nach dem schließenden Tag eingefügt werden,
was unerwünschte Effekte verursachen kann, da PHP mit der Ausgabe beginnt,
obwohl der Programmierer an dieser Stelle des Skripts nicht die Absicht
hat, eine Ausgabe zu senden.
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
echo "Hallo Welt";
// ... mehr Code
echo "Letzte Anweisung";
// das Skript endet hier ohne schließenden PHP-Tag
]]>
</programlisting>
</informalexample>
</para>
</sect1>
<sect1 xml:id="language.basic-syntax.phpmode">
<title>Den HTML-Bereich verlassen</title>
<para>
Alles außerhalb eines Paares von öffnenden und schließenden Tags wird vom
PHP-Parser ignoriert, was es ermöglicht, dass PHP-Dateien gemischten
Inhalt haben können. Dadurch kann PHP in HTML-Dokumente eingebettet
werden, zum Beispiel um Templates zu erstellen.
<informalexample>
<programlisting role="php">
<![CDATA[
<p>Das hier wird von PHP ignoriert, und vom Browser angezeigt.</p>
<?php echo 'Wohingegen das hier geparst wird.'; ?>
<p>Dies wird ebenfalls von PHP ignoriert, und vom Browser angezeigt.</p>
]]>
</programlisting>
</informalexample>
Dies funktioniert wie erwartet, da der PHP-Interpreter, wenn er auf einen
schließenden ?>-Tag trifft, einfach beginnt, alles mit Ausnahme des
direkt folgenden Zeilenumbruchs (siehe auch den Abschnitt <link
linkend="language.basic-syntax.instruction-separation">Abgrenzung von
Anweisungen</link>) auszugeben, bis er wieder auf einen öffnenden Tag
stößt. Das gilt nicht in der Mitte einer bedingten Anweisung. In diesem
Fall ermittelt der Interpreter das Resultat der Bedingung, bevor er
entscheidet, was übersprungen wird. Siehe das folgende Beispiel.
</para>
<para>
Verwendung von Strukturen mit Bedingungen
<example>
<title>Fortgeschrittene Ausgabe unter Verwendung von Bedingungen</title>
<programlisting role="php">
<![CDATA[
<?php if ($expression == true): ?>
Dies wird angezeigt, wenn der Ausdruck wahr ist.
<?php else: ?>
Andernfalls wird dies angezeigt.
<?php endif; ?>
]]>
</programlisting>
</example>
In diesem Beispiel überspringt PHP die Blöcke, in denen die Bedingung
nicht erfüllt ist, obwohl diese außerhalb der öffnenden/schließenden
PHP-Tags liegen; PHP überspringt sie entsprechend der Bedingung, da der
PHP-Interpreter Blöcke innerhalb einer nicht erfüllten Bedingung
überspringt.
</para>
<para>
Für die Ausgabe von großen Textblöcken ist der Ausstieg aus dem
Parse-Modus generell effizienter, als den gesamten Text durch
<function>echo</function> oder <function>print</function> zu jagen.
</para>
<para>
<note>
<para>
Wenn PHP in XML oder XHTML eingebettet wird, müssen die normalen
<code><?php ?></code>-PHP-Tags verwenden werden, um die Standards
einzuhalten.
</para>
</note>
</para>
</sect1>
<sect1 xml:id="language.basic-syntax.instruction-separation">
<title>Die Trennung von Anweisungen</title>
<para>
Wie in C oder Perl müssen Anweisungen auch in PHP am Ende mit einem
Semikolon abgeschlossen werden. Der abschließende Tag eines PHP-Codeblocks
impliziert automatisch ein Semikolon; die letzte Zeile eines PHP-Blocks
benötigt kein Semikolon am Ende. Der schließende Tag des Blocks schließt
den unmittelbar folgenden Zeilenumbruch, falls vorhanden, ein.
</para>
<para>
<example>
<title>Beispiel für den schließenden Tag, der den abschließenden Zeilenumbruch einschließt</title>
<programlisting role="php">
<![CDATA[
<?php echo "Etwas Text"; ?>
Kein Zeilenumbruch
<?= "Aber jetzt ein Zeilenumbruch" ?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
Etwas TextKein Zeilenumbruch
Aber jetzt ein Zeilenumbruch
]]>
</screen>
</example>
</para>
<para>
Beispiele für das Starten und Beenden des PHP-Parsers:
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
echo 'Dies ist ein Test';
?>
<?php echo 'Dies ist ein Test' ?>
<?php echo 'Wir ließen den letzten schließenden Tag weg';
]]>
</programlisting>
</informalexample>
<note>
<para>
Der schließende Tag eines PHP-Blocks am Ende einer Datei ist optional,
und in einigen Fällen ist das Weglassen hilfreich, wenn Sie
<function>include</function> oder <function>require</function>
verwenden, so dass ungewollte Whitespaces nicht am Ende einer Datei
auftreten und Sie noch im Stande sind, später weitere Header an die
Antwort hinzuzufügen. Es ist ebenfalls praktisch, wenn Sie die
Ausgabepufferung verwenden und keine ungewollten Whitespaces am Ende
eines durch die eingebundenen Dateien erzeugten Teils sehen wollen.
</para>
</note>
</para>
</sect1>
<sect1 xml:id="language.basic-syntax.comments">
<title>Kommentare</title>
<para>
PHP unterstützt 'C'-, 'C++'- und Unix-Shell-artige (Perl-artige)
Kommentare. Zum Beispiel:
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
echo 'Dies ist ein Test'; // Dies ist ein einzeiliger Kommentar im C++-Stil
/* Dies ist ein mehrzeiliger Kommentar
noch eine weitere Kommentarzeile */
echo 'Dies ist noch ein Test';
echo '... und ein letzter Test'; # Dies ist ein einzeiliger Kommentar im Shell-Stil
?>
]]>
</programlisting>
</informalexample>
</para>
<simpara>
Die "einzeiligen" Kommentar-Arten kommentieren sämtlichen Text bis zum
Zeilenende oder bis zum Ende des aktuellen PHP-Blocks aus, je nachdem, was
zuerst eintritt. Das bedeutet, das HTML-Code nach <literal>// ...
?></literal> oder <literal># ... ?></literal> ausgegeben WIRD: ?>
beendet den PHP-Modus und kehrt in den HTML-Modus zurück, so dass sich
<literal>//</literal> oder <literal>#</literal> nicht darauf auswirkt.
</simpara>
<para>
<informalexample>
<programlisting role="php">
<![CDATA[
<h1>Dies ist ein <?php # echo 'einfaches';?> Beispiel.</h1>
<p>Obige Überschrift wird lauten: 'Dies ist ein Beispiel.'.
]]>
</programlisting>
</informalexample>
</para>
<simpara>
'C'-artige Kommentare enden am ersten Vorkommen von <literal>*/</literal>.
Achten Sie daher darauf, 'C'-artige Kommentare nicht zu verschachteln.
Dieser Fehler entsteht leicht, wenn Sie längere Code-Blöcke
auskommentieren.
</simpara>
<para>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
/*
echo 'Dies ist ein Test'; /* Dieser Kommentar wird ein Problem verursachen. */
*/
?>
]]>
</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:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->