1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-26 00:32:15 +01:00
Files
archived-doc-ru/language/types.xml
2024-01-18 12:02:31 +03:00

150 lines
5.9 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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
-->