-
Notifications
You must be signed in to change notification settings - Fork 72
/
types.xml
149 lines (136 loc) · 5.88 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
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 5fccbe5195820cd9ec0045674312ec567ef5f6ed Maintainer: shein Status: ready -->
<!-- Reviewed: no -->
<chapter xml:id="language.types" xmlns="http://docbook.org/ns/docbook">
<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 – динамически типизированный язык, что означает, что по умолчанию нет необходимости указывать тип переменной,
так как он будет определён во время выполнения. Однако можно статически типизировать некоторые аспекты языка,
используя <link linkend="language.types.declarations">декларации типов</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>.
<informalexample>
<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>
</informalexample>
</para>
<note>
<simpara>
Вместо функции <function>get_debug_type</function>, которая была недоступна до PHP 8.0.0,
вызывали функцию <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.value;
&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
-->