-
Notifications
You must be signed in to change notification settings - Fork 45
/
Copy pathgoto.xml
139 lines (129 loc) · 3.17 KB
/
goto.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
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 7204e2dbb9b484c8b67bb5ad4a93fa1369c5b317 Maintainer: hholzgra Status: ready -->
<sect1 xml:id="control-structures.goto" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>goto</title>
<?phpdoc print-version-for="goto"?>
<para>
<mediaobject>
<alt>Was ist das schlimmste, was passieren könnte, wenn man goto benutzt?</alt>
<imageobject>
<imagedata fileref="en/language/figures/xkcd-goto.png" format="PNG"/>
</imageobject>
<caption>
<simpara>
Bild mit freundlicher Genehmigung von
<link xlink:href="&url.xkcd;292">xkcd</link>
</simpara>
</caption>
</mediaobject>
</para>
<para>
Der <literal>goto</literal>-Operator kann benutzt werden, um
innerhalb eines Programs zu einer anderen Anweisung zu springen.
Die Zielanweisung wird durch einen Zielnamen festgelegt, bei dem die
<emphasis>Groß- und Kleinschreibung beachtet werden muss</emphasis>, gefolgt
von einem Doppelpunkt, und der <literal>goto</literal>-Anweisung
wird der entsprechende Zielname angefügt. Hierbei handelt es sich
jedoch nicht um ein vollständig uneingeschränktes <literal>goto</literal>:
Die Zielanweisung muss in der selben Datei und im selben Kontext liegen,
&dh; dass weder aus einer Funktion oder Methode herausgesprungen werden
kann, noch in sie hineingesprungen. Weiterhin kann nicht in eine Schleifen-
oder switch-Anweisung hineingesprungen werden. Es ist jedoch möglich aus
diesen herauszuspringen, weshalb <literal>goto</literal> häufig als Ersatz
für ein mehrstufiges <literal>break</literal> verwendet wird.
</para>
<para>
<example>
<title><literal>goto</literal>-Beispiel</title>
<programlisting role="php">
<![CDATA[
<?php
goto a;
echo 'Foo';
a:
echo 'Bar';
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
Bar
]]>
</screen>
</example>
</para>
<para>
<example>
<title><literal>goto</literal>-Schleifenbeispiel</title>
<programlisting role="php">
<![CDATA[
<?php
for ($i = 0, $j = 50; $i < 100; $i++) {
while ($j--) {
if ($j == 17) {
goto end;
}
}
}
echo "i = $i";
end:
echo 'j hit 17';
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
j hit 17
]]>
</screen>
</example>
</para>
<para>
<example>
<title>Das wird nicht funktionieren</title>
<programlisting role="php">
<![CDATA[
<?php
goto loop;
for ($i = 0, $j = 50; $i < 100; $i++) {
while ($j--) {
loop:
}
}
echo "$i = $i";
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
Fatal error: 'goto' into loop or switch statement is disallowed in
script on line 2
]]>
</screen>
</example>
</para>
</sect1>
<!-- 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
-->