-
Notifications
You must be signed in to change notification settings - Fork 79
Expand file tree
/
Copy pathtypes.xml
More file actions
154 lines (139 loc) · 6.22 KB
/
types.xml
File metadata and controls
154 lines (139 loc) · 6.22 KB
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
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: e587d0655e426f97b3fcb431453da5030e743b23 Maintainer: shein Status: ready -->
<!-- Reviewed: no -->
<chapter xml:id="language.types" xmlns="http://docbook.org/ns/docbook" annotations="interactive">
<title>Типы</title>
<sect1 xml:id="language.types.intro">
<title>Введение</title>
<para>
Каждое выражение в PHP в зависимости от значения принадлежит конкретному типу из следующего списка:
<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> (floating-point number)</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 – динамически типизированный язык, поэтому по умолчанию указывать тип переменной не потребуется;
PHP определит тип переменной во время выполнения. Однако PHP разрешает статически типизировать отдельные составляющие языка
путём <link linkend="language.types.declarations">объявлений типов</link>.
Типы, которые поддерживает PHP, описывает раздел
«<link linkend="language.types.type-system">Система типов</link>».
</para>
<para>
Типы ограничивают виды операций, доступных для выполнения со значениями конкретного типа.
PHP попытается <link linkend="language.types.type-juggling">преобразовать</link> значение в тип, который поддерживает операцию,
если значение выражения или переменной участвует в операции, которую тип значения не поддерживает.
Этот процесс зависит от контекста, в котором обрабатывается значение.
Дополнительную информацию о преобразовании типов даёт раздел «<link linkend="language.types.type-juggling">Жонглирование типами</link>».
</para>
<tip>
<simpara>
<link linkend="types.comparisons">Таблицы сравнения типов</link>
также полезны, поскольку содержат
примеры сравнения значений разных типов.
</simpara>
</tip>
<note>
<simpara>
Принудительно преобразовать результат вычисления выражения в значение конкретного типа
возможно через <link linkend="language.types.typecasting">приведение типов</link>.
Переменную тоже возможно привести на месте к конкретному типу
функцией <function>settype</function>.
</simpara>
</note>
<para>
Значение и тип <link linkend="language.expressions">выражения</link>
проверяют функцией <function>var_dump</function>.
Тип <link linkend="language.expressions">выражения</link>
получают функцией <function>get_debug_type</function>.
Принадлежность выражения конкретному типу проверяют функциями семейства
<literal>is_<replaceable>type</replaceable></literal>.
<example>
<title>Типы</title>
<programlisting role="php">
<![CDATA[
<?php
$a_bool = true; // логическое значение
$a_str = "foo"; // строка
$a_str2 = 'foo'; // строка
$an_int = 12; // целое число
echo get_debug_type($a_bool), "\n";
echo get_debug_type($a_str), "\n";
// Проверить, содержит ли переменная целое число, и увеличить значение на четыре
if (is_int($an_int)) {
$an_int += 4;
}
var_dump($an_int);
// Проверить, содержит ли переменная $a_bool строку, и вывести строковое значение
if (is_string($a_bool)) {
echo "Строка: $a_bool";
}
?>
]]>
</programlisting>
&example.outputs.8;
<screen>
<![CDATA[
bool
string
int(16)
]]>
</screen>
</example>
</para>
<note>
<simpara>
До версии PHP 8.0.0, в которой функция <function>get_debug_type</function> была недоступна,
вызывали функцию <function>gettype</function>,
но она не возвращает канонические названия типов.
</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
-->