-
Notifications
You must be signed in to change notification settings - Fork 43
/
Copy pathtypes.xml
166 lines (153 loc) · 5.5 KB
/
types.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
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: f908fff129bcd8ec1605658e06457cb04e5b2b51 Maintainer: hholzgra Status: ready -->
<!-- Reviewed: yes -->
<!-- Rev-Revision: 9fe810352095922a68ce2807745a9bc35c0afe1f Reviewer: samesch -->
<!-- CREDITS: samesch, betz -->
<chapter xml:id="language.types" xmlns="http://docbook.org/ns/docbook">
<title>Typen</title>
<sect1 xml:id="language.types.intro">
<title>Einführung</title>
<para>
Jeder einzelne Ausdruck in PHP hat in Abhängigkeit von seinem Wert einen
der folgenden internen Typen:
<itemizedlist>
<listitem><simpara><type>null</type></simpara></listitem>
<listitem><simpara><type>bool</type></simpara></listitem>
<listitem><simpara><type>int</type></simpara></listitem>
<listitem><simpara><type>float</type> (Gleitkommazahl)</simpara></listitem>
<listitem><simpara><type>string</type></simpara></listitem>
<listitem><simpara><type>array</type></simpara></listitem>
<listitem><simpara><type>object</type></simpara></listitem>
<listitem><simpara><type>callable</type></simpara></listitem>
<listitem><simpara><type>resource</type></simpara></listitem>
</itemizedlist>
</para>
<para>
PHP ist eine dynamisch typisierte Sprache, was bedeutet, dass es
standardmäßig nicht notwendig ist, einer Variablen einen Typ zuzuweisen,
weil dieser zur Laufzeit bestimmt wird. Mit Hilfe von
<link linkend="language.types.declarations">Typ-Deklarationen</link> ist es
jedoch möglich, einige Aspekte der Sprache statisch zu typisieren.
Die verschiedenen Typen, die vom PHP-Typsystem unterstützt werden, können
auf der Seite <link linkend="language.types.type-system">Typsystem</link>
gefunden werden.
</para>
<para>
Durch Typen wird die Art der Operationen, die mit ihnen durchgeführt werden
können, eingeschränkt. Wenn jedoch ein Ausdruck oder eine Variable in einer
Operation verwendet wird, die ihr Typ nicht unterstützt, wird PHP versuchen,
den Wert mittels
<link linkend="language.types.type-juggling">Typ-Umwandlung</link> (sog.
Type Juggling, Typ-Jonglage) in einen Typ zu überführen, der die Operation
unterstützt. Dieser Prozess hängt von dem Kontext ab, in dem der Wert
verwendet wird. Weitere Informationen hierzu sind im Abschnitt über
<link linkend="language.types.type-juggling">Typ-Umwandlung</link> zu
finden.
</para>
<tip>
<simpara>
<link linkend="types.comparisons">Die Tabellen mit Vergleichen von PHP-Typen</link>
können ebenfalls nützlich sein, da sie verschiedene Beispiele für den
Vergleich zwischen Werten verschiedener Typen enthalten.
</simpara>
</tip>
<note>
<simpara>
Mit einer <link linkend="language.types.typecasting">Typ-Zuweisung</link>
kann man erzwingen, dass ein Ausdruck nach einem bestimmten Typ
ausgewertet wird. Außerdem kann eine Variable mit Hilfe der Funktion
<function>settype</function> direkt auf einen bestimmten Typ gesetzt werden.
</simpara>
</note>
<para>
Um den Wert und den Typ eines
<link linkend="language.expressions">Ausdrucks</link> zu ermitteln, kann
die Funktion <function>var_dump</function> verwendet werden. Den Typ eines
<link linkend="language.expressions">Ausdrucks</link> erhält man mit der
Funktion <function>get_debug_type</function>. Um jedoch zu prüfen, ob ein
Ausdruck von einem bestimmten Typ ist, sollten stattdessen die
<!-- TODO When PhD support is there: <function>is_<replaceable>type</replaceable></function> -->
<literal>is_<replaceable>type</replaceable></literal>-Funktionen verwendet
werden.
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
$a_bool = true; // Typ bool (Wahrheitswert)
$a_str = "foo"; // Typ string (Zeichenkette)
$a_str2 = 'foo'; // Typ string (Zeichenkette)
$an_int = 12; // Typ int (Ganzzahl)
echo get_debug_type($a_bool), "\n";
echo get_debug_type($a_str), "\n";
// Falls es ein Integer ist, erhöhe ihn um vier
if (is_int($an_int)) {
$an_int += 4;
}
var_dump($an_int);
// Falls $a_bool ein String ist, gib ihn aus
if (is_string($a_bool)) {
echo "String: $a_bool";
}
?>
]]>
</programlisting>
&example.outputs.8;
<screen>
<![CDATA[
bool
string
int(16)
]]>
</screen>
</informalexample>
</para>
<note>
<simpara>
Die Funktion <function>get_debug_type</function> steht erst seit PHP 8.0.0
zur Verfügung. Davor kann stattdessen die Funktion
<function>gettype</function> verwendet werden, die jedoch nicht die
kanonischen Typnamen verwendet.
</simpara>
</note>
</sect1>
&language.types.type-system;
&language.types.null;
&language.types.boolean;
&language.types.integer;
&language.types.float;
&language.types.string;
&language.types.numeric-strings;
&language.types.array;
&language.types.object;
&language.types.enumerations;
&language.types.resource;
&language.types.callable;
&language.types.mixed;
&language.types.void;
&language.types.never;
&language.types.relative-class-types;
&language.types.singleton;
&language.types.iterable;
&language.types.declarations;
&language.types.type-juggling;
</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
-->