-
Notifications
You must be signed in to change notification settings - Fork 46
/
Copy pathprint.xml
215 lines (191 loc) · 6.05 KB
/
print.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
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 2a5223230bf6177c225003ca30c63f48ef266cc0 Maintainer: sammywg Status: ready -->
<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://docbook.org/ns/docbook" xml:id="function.print">
<refnamediv>
<refname>print</refname>
<refpurpose>Ausgabe eines Strings</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>int</type><methodname>print</methodname>
<methodparam><type>string</type><parameter>expression</parameter></methodparam>
</methodsynopsis>
<para>
Gibt <parameter>expression</parameter> aus.
</para>
<para>
<literal>print</literal> ist keine Funktion, sondern ein Sprachkonstrukt.
Sein Argument ist der Ausdruck, der auf das Schlüsselwort
<literal>print</literal> folgt, und wird nicht durch Klammern abgegrenzt.
</para>
<para>
Der Hauptunterschied zu <literal>echo</literal> besteht darin, dass
<literal>print</literal> nur ein einziges Argument entgegennimmt, und
immer <literal>1</literal> zurückgibt.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>expression</parameter></term>
<listitem>
<para>
Der Ausdruck, der ausgegeben werden soll. Nicht-String-Werte werden in
Strings umgewandelt, auch wenn <link
linkend="language.types.declarations.strict">die Direktive
<literal>strict_types</literal></link> aktiviert ist.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Gibt immer <literal>1</literal> zurück.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title><literal>print</literal>-Beispiele</title>
<programlisting role="php">
<![CDATA[
<?php
print "print benötigt keine Klammern.";
// Es wird kein Zeilenumbruch oder Leerzeichen eingefügt; das Folgende gibt
// "HalloWelt" in einer Zeile aus
print "Hallo";
print "Welt";
print "Dieser String umfasst
mehrere Zeilen. Die Zeilenumbrüche
werden mit ausgegeben.";
print "Dieser String umfasst\nmehrere Zeilen. Die Zeilenumbrüche\nwerden mit ausgegeben.";
// Das Argument kann ein beliebiger Ausdruck sein, der einen String erzeugt
$foo = "ein Beispiel";
print "foo ist $foo"; // foo ist ein Beispiel
$fruechte = ["Zitrone", "Orange", "Banane"];
print implode(" und ", $fruechte); // Zitrone und Orange und Banane
// Nicht-String-Ausdrücke werden in String umgewandelt, auch wenn
// declare(strict_types=1) verwendet wird
print 6 * 7; // 42
// Da print einen Rückgabewert hat, kann es in Ausdrücken verwendet werden
// Das Folgende gibt "Hallo Welt" aus
if ( print "Hallo" ) {
echo " Welt";
}
// Das Folgende gibt "wahr" aus
( 1 === 1 ) ? print 'wahr' : print 'falsch';
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<note>
<title>Die Verwendung mit Klammern</title>
<para>
Wenn das Argument in Klammern an <literal>print</literal> übergeben wird,
löst das keinen Syntaxfehler aus und erzeugt eine Syntax, die wie ein
normaler Funktionsaufruf aussieht. Dies kann jedoch irreführend sein, denn
die Klammern sind tatsächlich Teil des auszugebenden Ausdrucks und nicht
Teil der <literal>print</literal>-Syntax selbst.
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
print "Hallo";
// gibt "Hallo" aus
print("Hallo");
// gibt auch "Hallo" aus, weil ("Hallo") ein gültiger Ausdruck ist
print(1 + 2) * 3;
// gibt "9" aus; die Klammern bewirken, dass zuerst 1+2 ausgewertet wird, dann 3*3
// Die print-Anweisung sieht den gesamten Ausdruck als ein Argument
if ( print("Hallo") && false ) {
print " - inside if";
}
else {
print " - inside else";
}
// gibt " - inside if" aus
// Der Ausdruck ("Hallo") && false wird zuerst ausgewertet und ergibt false
// Dies wird in die leere Zeichenkette "" umgewandelt und gedruckt
// Das print-Konstrukt gibt dann 1 zurück, also wird der Code im if-Block ausgeführt
?>
]]>
</programlisting>
</informalexample>
</para>
<para>
Wenn <literal>print</literal> in einem größeren Ausdruck verwendet wird,
könnte es nötig sein, sowohl das Schlüsselwort als auch sein Argument in
Klammern zu setzen, um das gewünschte Ergebnis zu erhalten:
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
if ( (print "Hallo") && false ) {
print " - inside if";
}
else {
print " - inside else";
}
// gibt "Hallo - inside else" aus
// Im Gegensatz zum vorherigen Beispiel wird der Ausdruck (print "Hallo")
// zuerst ausgewertet
// Nach der Ausgabe von "Hallo" gibt print 1 zurück
// Da 1 && false falsch ist, wird der Code im else-Block ausgeführt
print "Hallo " && print "Welt";
// gibt "Welt1" aus; print "Welt" wird zuerst ausgewertet,
// dann wird der Ausdruck "Hallo " && 1 an den linken print übergeben
(print "Hallo ") && (print "Welt");
// gibt "Hallo Welt" aus; die Klammern erzwingen, dass die print-Ausdrücke
// vor dem && ausgewertet werden.
?>
]]>
</programlisting>
</informalexample>
</para>
</note>
¬e.language-construct;
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>echo</function></member>
<member><function>printf</function></member>
<member><function>flush</function></member>
<member><link linkend="language.types.string" >Möglichkeiten literale Strings anzugeben</link></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- 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
-->