forked from php/doc-ja
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtype-system.xml
200 lines (188 loc) · 6.33 KB
/
type-system.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
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 5fccbe5195820cd9ec0045674312ec567ef5f6ed Maintainer: mumumu Status: ready -->
<sect1 xml:id="language.types.type-system">
<title>型システム</title>
<para>
PHP は部分型の関係を満たしつつ(behavioral subtyping)、
名前ベースで一致を調べる型システム(nominal type system) を採用しています。
部分型の関係はコンパイル時にチェックされますが、
型の検証は実行時に動的に行われます。
</para>
<para>
PHP の型システムは、様々な基本型(atomic type)をサポートしており、
それらを組み合わせてより複雑な型を作ることができます。
そうした複雑な型の一部については、
<link linkend="language.types.declarations">型宣言</link> 時に記述できます。
</para>
<sect2 xml:id="language.types.type-system.atomic">
<title>基本型</title>
<para>
基本型の一部は言語に強く統合されている組み込み型であり、
ユーザー定義の型として再現できません。
</para>
<para>
基本型の一覧は以下になります:
<itemizedlist>
<listitem>
<simpara>組み込みの型</simpara>
<itemizedlist>
<listitem>
<simpara>ヌル(<type>null</type>)</simpara>
</listitem>
<listitem>
<simpara>
スカラー型:
</simpara>
<itemizedlist>
<listitem>
<simpara>論理値(<type>bool</type>)</simpara>
</listitem>
<listitem>
<simpara>整数(<type>int</type>)</simpara>
</listitem>
<listitem>
<simpara>浮動小数点数(<type>float</type>)</simpara>
</listitem>
<listitem>
<simpara>文字列(<type>string</type>)</simpara>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<simpara>配列(<type>array</type>)</simpara>
</listitem>
<listitem>
<simpara>オブジェクト(<type>object</type>)</simpara>
</listitem>
<listitem>
<simpara>リソース(<type>resource</type>)</simpara>
</listitem>
<listitem>
<simpara><type>never</type></simpara>
</listitem>
<listitem>
<simpara><type>void</type></simpara>
</listitem>
<listitem>
<simpara>
<link linkend="language.types.relative-class-types">クラス内での関係を示す相対型</link>:
<type>self</type>, <type>parent</type>, <type>static</type>
</simpara>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<simpara>
<link linkend="language.types.value">Value型</link>
</simpara>
<itemizedlist>
<listitem>
<simpara><type>false</type></simpara>
</listitem>
<listitem>
<simpara><type>true</type></simpara>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<simpara>
ユーザー定義型 (一般的に、クラス型とも呼びます)
</simpara>
<itemizedlist>
<listitem>
<simpara><link linkend="language.oop5.interfaces">インターフェイス</link></simpara>
</listitem>
<listitem>
<simpara><link linkend="language.oop5.basic.class">クラス</link></simpara>
</listitem>
<listitem>
<simpara><link linkend="language.types.enumerations">列挙型(Enum)</link></simpara>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<simpara><type>callable</type></simpara>
</listitem>
</itemizedlist>
</para>
</sect2>
<sect2 xml:id="language.types.type-system.composite">
<title>複合型</title>
<para>
複数の基本型を組み合わせて、複合型を作ることができます。
PHP では、次のやり方で型を組み合わせることができます:
</para>
<itemizedlist>
<listitem>
<simpara>
(インターフェイスやクラスの)交差型
</simpara>
</listitem>
<listitem>
<simpara>
union 型
</simpara>
</listitem>
</itemizedlist>
<sect3 xml:id="language.types.type-system.composite.intersection">
<title>交差型</title>
<para>
交差型 は、宣言した複数のクラス型を(単一ではなく)
すべて満たす値を受け入れることができます。
交差型を構成する個別の型は、<literal>&</literal> 記号で結合します。
よって、型 <literal>T</literal>, <literal>U</literal>,
<literal>V</literal> の交差型は <literal>T&U&V</literal> と書きます。
</para>
</sect3>
<sect3 xml:id="language.types.type-system.composite.union">
<title>union 型</title>
<para>
union 型は、ひとつではなく、
複数の異なる型を値として受け入れることができます。
union 型を構成する個別の型は、<literal>|</literal> 記号で結合します。
よって、型 <literal>T</literal>, <literal>U</literal>,
<literal>V</literal> の union 型は <literal>T|U|V</literal> と書きます。
型のひとつが交差型の場合、<acronym>DNF</acronym> で記すために
括弧で囲む必要があります。
つまり、<literal>T|(X&Y)</literal> と書く必要があります。
</para>
</sect3>
</sect2>
<sect2 xml:id="language.types.type-system.alias">
<title>型のエイリアス</title>
<para>
PHP は型のエイリアスをふたつサポートしています。
<type>mixed</type> と <type>iterable</type> です。
それぞれ、
<link linkend="language.types.type-system.composite.union">union 型</link>
<literal>object|resource|array|string|float|int|bool|null</literal>
と、<literal>Traversable|array</literal> に対応します。
</para>
<note>
<simpara>
PHP は、ユーザー定義の型のエイリアスはサポートしていません。
</simpara>
</note>
</sect2>
</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
-->