svn: /phpdoc/ru/trunk/language/ operators.xml
[email protected] (Sergey Panteleev) Thu, 19 Nov 2020 08:40:57 +0000
| Newsgroups | php.doc.ru |
|---|---|
| Message-ID | <[email protected]> |
sergey Thu, 19 Nov 2020 08:40:57 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=351448
Log:
docs(ru): Updated to English revision
Changed paths:
U phpdoc/ru/trunk/language/operators.xml
svn-diffs-351448.txt
(text/x-diff, 25.5 KB)
Modified: phpdoc/ru/trunk/language/operators.xml
===================================================================
--- phpdoc/ru/trunk/language/operators.xml 2020-11-19 05:32:22 UTC (rev 351447)
+++ phpdoc/ru/trunk/language/operators.xml 2020-11-19 08:40:57 UTC (rev 351448)
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 350871 Maintainer: shein Status: ready -->
+<!-- EN-Revision: 351340 Maintainer: shein Status: ready -->
<!-- $Revision$ -->
<!-- Reviewed: yes -->
<chapter xml:id="language.operators" xmlns="http://docbook.org/ns/docbook">
@@ -262,10 +262,10 @@
</entry>
</row>
<row>
- <entry>(н/а)</entry>
- <entry><literal>print</literal></entry>
- <entry><function>print</function></entry>
- </row>
+ <entry>(н/а)</entry>
+ <entry><literal>print</literal></entry>
+ <entry><function>print</function></entry>
+ </row>
<row>
<entry>левая</entry>
<entry><literal>and</literal></entry>
@@ -422,8 +422,7 @@
<row>
<entry>$a ** $b</entry>
<entry>Возведение в степень</entry>
- <entry>Возведение <varname>$a</varname> в степень <varname>$b</varname>.
- Добавлено в PHP 5.6.</entry>
+ <entry>Возведение <varname>$a</varname> в степень <varname>$b</varname>.</entry>
</row>
</tbody>
</tgroup>
@@ -458,11 +457,14 @@
</programlisting>
</informalexample>
</para>
- <simpara>
- Также вы можете ознакомиться с разделом документации
- <link linkend="ref.math">Математические функции</link>.
- </simpara>
-
+ <sect2 role="seealso">
+ &reftitle.seealso;
+ <para>
+ <simplelist>
+ <member><link linkend="ref.math">Математические функции</link></member>
+ </simplelist>
+ </para>
+ </sect2>
</sect1>
<sect1 xml:id="language.operators.assignment">
@@ -555,14 +557,10 @@
</para>
<para>
Оператор <link linkend="language.oop5.basic.new">new</link>
- автоматически возвращает ссылку, поэтому присваивание результата операции
- <link linkend="language.oop5.basic.new">new</link> по ссылке
- не допускается с PHP 7.0.0, начиная с PHP 5.3.0
- генерирует ошибку уровня <constant>E_DEPRECATED</constant>, а в более ранних
- версиях - ошибку уровня <constant>E_STRICT</constant>.
+ автоматически возвращает ссылку, так как присвоение результата операции
+ <link linkend="language.oop5.basic.new">new</link> по ссылке является ошибкой.
</para>
<para>
- Например, следующий код выдаст ошибку или предупреждение:
<informalexample>
<programlisting role="php">
<![CDATA[
@@ -573,24 +571,12 @@
?>
]]>
</programlisting>
- &example.outputs.7;
+ &example.outputs;
<screen>
<![CDATA[
Parse error: syntax error, unexpected 'new' (T_NEW) in …
]]>
</screen>
- &example.outputs.53;
- <screen>
-<![CDATA[
-Deprecated: Assigning the return value of new by reference is deprecated in …
-]]>
- </screen>
- &example.outputs.5;
- <screen>
-<![CDATA[
-Strict Standards: Assigning the return value of new by reference is deprecated in …
-]]>
- </screen>
</informalexample>
</para>
<para>
@@ -598,126 +584,129 @@
разделу <link linkend="language.references">Подробно о ссылках</link>.
</para>
</sect2>
-
+
<sect2 xml:id="language.operators.assignment.arithmetic">
- <title>Операторы арифметического присваивания</title>
- <informaltable>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>Пример</entry>
- <entry>Эквивалент</entry>
- <entry>Операция</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>$a += $b</entry>
- <entry>$a = $a + b</entry>
- <entry>Сложение</entry>
- </row>
- <row>
- <entry>$a -= $b</entry>
- <entry>$a = $a - $b</entry>
- <entry>Вычитание</entry>
- </row>
- <row>
- <entry>$a *= $b</entry>
- <entry>$a = $a * $b</entry>
- <entry>Умножение</entry>
- </row>
- <row>
- <entry>$a /= $b</entry>
- <entry>$a = $a / $b</entry>
- <entry>Деление</entry>
- </row>
- <row>
- <entry>$a %= $b</entry>
- <entry>$a = $a % $b</entry>
- <entry>Модуль</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect2>
-
- <sect2 xml:id="language.operators.assignment.bitwise">
- <title>Операторы побитового присваивания</title>
- <informaltable>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>Пример</entry>
- <entry>Эквивалент</entry>
- <entry>Операция</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>$a &= $b</entry>
- <entry>$a = $a & $b</entry>
- <entry>Побитовое И</entry>
- </row>
- <row>
- <entry>$a |= $b</entry>
- <entry>$a = $a | $b</entry>
- <entry>Побитовое ИЛИ</entry>
- </row>
- <row>
- <entry>$a ^= $b</entry>
- <entry>$a = $a ^ $b</entry>
- <entry>Побитовое исключающее ИЛИ (Xor)</entry>
- </row>
- <row>
- <entry>$a <<= $b</entry>
- <entry>$a = $a << $b</entry>
- <entry>Побитовый сдвиг влево</entry>
- </row>
- <row>
- <entry>$a >>= $b</entry>
- <entry>$a = $a >> $b</entry>
- <entry>Побитовый сдвиг вправо</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect2>
-
- <sect2 xml:id="language.operators.assignment.other">
- <title>Другие операторы присваивания</title>
- <informaltable>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>Пример</entry>
- <entry>Эквивалент</entry>
- <entry>Операция</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>$a .= $b</entry>
- <entry>$a = $a . $b</entry>
- <entry>Конкатенация строк</entry>
- </row>
- <row>
- <entry>$a ??= $b</entry>
- <entry>$a = $a ?? $b</entry>
- <entry>Объединение с Null</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect2>
- <sect2 xml:id="language.operators.assignment.see-also">
+ <title>Операторы арифметического присваивания</title>
+ <informaltable>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>Пример</entry>
+ <entry>Эквивалент</entry>
+ <entry>Операция</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>$a += $b</entry>
+ <entry>$a = $a + b</entry>
+ <entry>Сложение</entry>
+ </row>
+ <row>
+ <entry>$a -= $b</entry>
+ <entry>$a = $a - $b</entry>
+ <entry>Вычитание</entry>
+ </row>
+ <row>
+ <entry>$a *= $b</entry>
+ <entry>$a = $a * $b</entry>
+ <entry>Умножение</entry>
+ </row>
+ <row>
+ <entry>$a /= $b</entry>
+ <entry>$a = $a / $b</entry>
+ <entry>Деление</entry>
+ </row>
+ <row>
+ <entry>$a %= $b</entry>
+ <entry>$a = $a % $b</entry>
+ <entry>Модуль</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </sect2>
+
+ <sect2 xml:id="language.operators.assignment.bitwise">
+ <title>Операторы побитового присваивания</title>
+ <informaltable>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>Пример</entry>
+ <entry>Эквивалент</entry>
+ <entry>Операция</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>$a &= $b</entry>
+ <entry>$a = $a & $b</entry>
+ <entry>Побитовое И</entry>
+ </row>
+ <row>
+ <entry>$a |= $b</entry>
+ <entry>$a = $a | $b</entry>
+ <entry>Побитовое ИЛИ</entry>
+ </row>
+ <row>
+ <entry>$a ^= $b</entry>
+ <entry>$a = $a ^ $b</entry>
+ <entry>Побитовое исключающее ИЛИ (Xor)</entry>
+ </row>
+ <row>
+ <entry>$a <<= $b</entry>
+ <entry>$a = $a << $b</entry>
+ <entry>Побитовый сдвиг влево</entry>
+ </row>
+ <row>
+ <entry>$a >>= $b</entry>
+ <entry>$a = $a >> $b</entry>
+ <entry>Побитовый сдвиг вправо</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </sect2>
+
+ <sect2 xml:id="language.operators.assignment.other">
+ <title>Другие операторы присваивания</title>
+ <informaltable>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>Пример</entry>
+ <entry>Эквивалент</entry>
+ <entry>Операция</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>$a .= $b</entry>
+ <entry>$a = $a . $b</entry>
+ <entry>Конкатенация строк</entry>
+ </row>
+ <row>
+ <entry>$a ??= $b</entry>
+ <entry>$a = $a ?? $b</entry>
+ <entry>Объединение с Null</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </sect2>
+
+ <sect2 role="seealso" xml:id="language.operators.assignment.see-also">
+ &reftitle.seealso;
<para>
- Смотрите также разделы руководства, посвященные <link linkend="language.operators.arithmetic">
- арифметическим операторам</link>, <link linkend="language.operators.bitwise">побитовым операторам</link>,
- <link linkend="language.operators.string">строковым операторам</link> и
- <link linkend="language.operators.comparison.coalesce">операторам объединения с null</link>.
+ <simplelist>
+ <member><link linkend="language.operators.arithmetic">арифметические операторы</link></member>
+ <member><link linkend="language.operators.bitwise">побитовые операторы</link></member>
+ <member><link linkend="language.operators.comparison.coalesce">операторы объединения с null</link></member>
+ </simplelist>
</para>
</sect2>
- </sect1>
+ </sect1>
<sect1 xml:id="language.operators.bitwise">
<title>Побитовые операторы</title>
@@ -1363,26 +1352,26 @@
</para>
<warning>
<para>
- До PHP 7.0 использование отрицательного побитового сдвига, либо сдвига,
- превышающегося разрядность операционной системы может привести к
- неопределенному результату. Другими словами, не сдвигайте больше чем на 31 бит на
- 32-битных системах и больше чем на 63 бита на 64-битных.
- </para>
- <para>
Используйте функции из расширения <link linkend="book.gmp">gmp</link> для побитовых
операций над числами, большими чем <literal>PHP_INT_MAX</literal>.
</para>
</warning>
- <para>
- Смотрите также
- <function>pack</function>,
- <function>unpack</function>,
- <function>gmp_and</function>,
- <function>gmp_or</function>,
- <function>gmp_xor</function>,
- <function>gmp_testbit</function>,
- <function>gmp_clrbit</function>
- </para>
+
+ <sect2 role="seealso">
+ &reftitle.seealso;
+ <para>
+ <simplelist>
+<!-- <link linkend="language.oop5.basic.class.class">::class</link> -->
+ <member><function>pack</function></member>
+ <member><function>unpack</function></member>
+ <member><function>gmp_and</function></member>
+ <member><function>gmp_or</function></member>
+ <member><function>gmp_xor</function></member>
+ <member><function>gmp_testbit</function></member>
+ <member><function>gmp_clrbit</function></member>
+ </simplelist>
+ </para>
+ </sect2>
</sect1>
<sect1 xml:id="language.operators.comparison">
@@ -1460,9 +1449,9 @@
<entry>$a <=> $b</entry>
<entry>Космический корабль (spaceship)</entry>
<entry>
- Число типа <type>integer</type> меньше, больше или равное нулю, когда
+ Число типа <type>int</type> меньше, больше или равное нулю, когда
<varname>$a</varname> соответственно меньше, больше или равно
- <varname>$b</varname>. Доступно c PHP 7.
+ <varname>$b</varname>.
</entry>
</row>
</tbody>
@@ -1582,8 +1571,8 @@
</entry>
</row>
<row>
- <entry><type>string</type>, <type>resource</type> или <type>number</type></entry>
- <entry><type>string</type>, <type>resource</type> или <type>number</type></entry>
+ <entry><type>string</type>, <type>resource</type>, <type>int</type> или <type>float</type></entry>
+ <entry><type>string</type>, <type>resource</type>, <type>int</type> или <type>float</type></entry>
<entry>Строки и ресурсы переводятся в числа, обычная математика</entry>
</row>
<row>
@@ -1657,18 +1646,12 @@
</example>
</para>
- <para>
- Смотрите также <function>strcasecmp</function>, <function>strcmp</function>,
- <link linkend="language.operators.array">операторы массивов</link>
- и раздел руководства <link linkend="language.types">Типы</link>.
- </para>
-
<warning>
- <title>Сравнение чисел с плавающей точкой</title>
+ <title>Сравнение чисел с плавающей запятой</title>
<para>
Из-за особого внутреннего представления типа <type>float</type>, не нужно
- проверять на равенство два числа с плавающей точкой (<type>float</type>).
+ проверять на равенство два числа с плавающей запятой (<type>float</type>).
</para>
<para>
@@ -1676,6 +1659,18 @@
</para>
</warning>
+ <sect2 role="seealso">
+ &reftitle.seealso;
+ <para>
+ <simplelist>
+ <member><function>strcasecmp</function></member>
+ <member><function>strcmp</function></member>
+ <member><link linkend="language.operators.array">Операторы, работающие с массивами</link></member>
+ <member><link linkend="language.types">Типы</link></member>
+ </simplelist>
+ </para>
+ </sect2>
+
<sect2 xml:id="language.operators.comparison.ternary">
<title>Тернарный оператор</title>
<para>
@@ -1706,7 +1701,7 @@
<replaceable>expr1</replaceable> имеет значение &false;.
</para>
<para>
- Начиная с версии PHP 5.3 также стало возможным не писать среднюю часть
+ Также стало возможным не писать среднюю часть
тернарного оператора. Выражение <literal>expr1 ?: expr3</literal>
возвращает <replaceable>expr1</replaceable> если <replaceable>expr1</replaceable>
имеет значение &true; и <replaceable>expr3</replaceable> в противном случае.
@@ -1725,7 +1720,8 @@
<para>
Рекомендуется избегать "нагромождения" тернарных выражений.
Поведение PHP неочевидно при использовании нескольких тернарных операторов
- в одном выражении:
+ в одном выражении неочевидно по сравнению с другими языками.
+ Действительно, до PHP 8.0.0 тернарные выражения оценивались слева направо, а не справа налево, как в большинстве других языков программирования.
<example>
<title>Неочевидное поведение тернарного оператора</title>
<programlisting role="php">
@@ -1734,13 +1730,13 @@
// на первый взгляд, следующий код должен вывести 'true'
echo (true?'true':false?'t':'f');
-// однако, он выводит 't'
+// однако, он выводит 't' до PHP 8.0.0
// это происходит потому, что тернарные выражения вычисляются слева направо
// это намного более очевидная версия вышеприведенного кода
echo ((true ? 'true' : false) ? 't' : 'f');
-// здесь вы можете видеть, что первое выражение вычисляется в 'true', которое
+// здесь видно, что первое выражение вычисляется в 'true', которое
// в свою очередь вычисляется в (bool)true, таким образом возвращая истинную ветвь
// второго тернарного выражения.
?>
@@ -1753,7 +1749,7 @@
<sect2 xml:id="language.operators.comparison.coalesce">
<title>Оператор объединения с null</title>
<para>
- Также, начиная с PHP 7, добавился новый оператор "??" (null coalescing).
+ Также добавился новый оператор "??" (null coalescing).
<example>
<title>Присваивание значения по умолчанию</title>
<programlisting role="php">
@@ -1830,7 +1826,7 @@
</simpara>
<simpara>
Любое сообщение об ошибке, сгенерированное выражением, доступно
- в элементе массива <literal>"message"</literal>, возвращаемого <function>get_error_last</function>.
+ в элементе массива <literal>"message"</literal>, возвращаемого <function>error_get_last</function>.
Результат этой функции будет меняться при каждой ошибке, поэтому его необходимо проверить заранее.
</simpara>
<para>
@@ -1864,11 +1860,6 @@
&foreach; и т.д.
</simpara>
</note>
- <simpara>
- Также ознакомьтесь с описанием функции <function>error_reporting</function>
- и разделом руководства
- <link linkend="ref.errorfunc">Обработка ошибок и функции логирования</link>.
- </simpara>
<warning>
<para>
На сегодняшний день оператор "@" подавляет вывод сообщений даже о критических
@@ -1878,6 +1869,16 @@
работа скрипта будет остановлена без каких-либо уведомлений.
</para>
</warning>
+
+ <sect2 role="seealso">
+ &reftitle.seealso;
+ <para>
+ <simplelist>
+ <member><function>error_reporting</function></member>
+ <member><link linkend="ref.errorfunc">Обработка ошибок и функции логирования</link></member>
+ </simplelist>
+ </para>
+ </sect2>
</sect1>
<sect1 xml:id="language.operators.execution">
@@ -1912,12 +1913,18 @@
будут работать внутри строк в двойных кавычках.
</para>
</note>
- <para>
- Ознакомьтесь также со следующими разделами документации:
- <link linkend="ref.exec">Функции для выполнения программ</link>,
- <function>popen</function> <function>proc_open</function> и
- <link linkend="features.commandline">Использование PHP в командной строке</link>.
- </para>
+
+ <sect2 role="seealso">
+ &reftitle.seealso;
+ <para>
+ <simplelist>
+ <member><link linkend="ref.exec">Функции для выполнения программ</link></member>
+ <member><function>popen</function></member>
+ <member><function>proc_open</function></member>
+ <member><link linkend="features.commandline">Использование PHP в командной строке</link></member>
+ </simplelist>
+ </para>
+ </sect2>
</sect1>
<sect1 xml:id="language.operators.increment">
@@ -2200,11 +2207,16 @@
</programlisting>
</informalexample>
</para>
- <para>
- Также ознакомьтесь с разделами документации
- <link linkend="language.types.string">Строки</link> и
- <link linkend="ref.strings">Функции для работы со строками</link>.
- </para>
+
+ <sect2 role="seealso">
+ &reftitle.seealso;
+ <para>
+ <simplelist>
+ <member><link linkend="language.types.string">Строки</link></member>
+ <member><link linkend="ref.strings">Функции для работы со строками</link></member>
+ </simplelist>
+ </para>
+ </sect2>
</sect1>
<sect1 xml:id="language.operators.array">
@@ -2338,12 +2350,18 @@
</programlisting>
</example>
</para>
- <para>
- Также ознакомьтесь с разделами
- <link linkend="language.types.array">Массивы</link> и
- <link linkend="ref.array">Функции для работы с массивами</link>.
- </para>
+
+ <sect2 role="seealso">
+ &reftitle.seealso;
+ <para>
+ <simplelist>
+ <member><link linkend="language.types.array">Массивы</link></member>
+ <member><link linkend="ref.array">Функции для работы с массивами</link></member>
+ </simplelist>
+ </para>
+ </sect2>
</sect1>
+
<sect1 xml:id="language.operators.type">
<title>Оператор проверки типа</title>
<para>
@@ -2539,57 +2557,37 @@
</para>
<para>
Начиная с PHP 7.3.0, константы разрешены в левой части оператора <literal>instanceof</literal>.
- <example>
- <title>Использование <literal>instanceof</literal> для проверки констант</title>
- <programlisting role="php">
+ <example>
+ <title>Использование <literal>instanceof</literal> для проверки констант</title>
+ <programlisting role="php">
<![CDATA[
<?php
var_dump(FALSE instanceof stdClass);
?>
]]>
- </programlisting>
- &example.outputs.73;
- <screen>
+ </programlisting>
+ &example.outputs.73;
+ <screen>
<![CDATA[
bool(false)
]]>
</screen>
- </example>
- </para>
- <para>
- Есть несколько подводных камней, которых следует остерегаться. До PHP 5.1.0,
- <literal>instanceof</literal> вызывал <function>__autoload</function>, если имя класса не
- существовало. Вдобавок, если класс не был загружен, происходила фатальная ошибка. Это
- можно было обойти с помощью динамической ссылки на класс или использования строковой
- переменной с именем класса:
- <example>
- <title>Избежание поиска класса и фатальных ошибок с <literal>instanceof</literal> в PHP 5.0</title>
- <programlisting role="php">
-<![CDATA[
-<?php
-$d = 'NotMyClass';
-var_dump($a instanceof $d); // нет фатальной ошибки
-?>
- ]]>
- </programlisting>
- &example.outputs;
- <screen>
-<![CDATA[
-bool(false)
-]]>
- </screen>
</example>
</para>
+
<simpara>
- Оператор <literal>instanceof</literal> был добавлен в PHP 5. До этого времени
- использовалась функция <function>is_a</function>, но позже <function>is_a</function>
- была помечена устаревшей в пользу <literal>instanceof</literal>. Учтите, что с PHP
- 5.3.0, <function>is_a</function> больше не является устаревшей.
+ Оператор <literal>instanceof</literal> аналогичен функции <function>is_a</function>.
</simpara>
- <para>
- Ознакомьтесь также с описанием функций <function>get_class</function> и
- <function>is_a</function>.
- </para>
+
+ <sect2 role="seealso">
+ &reftitle.seealso;
+ <para>
+ <simplelist>
+ <member><function>get_class</function></member>
+ <member><function>is_a</function></member>
+ </simplelist>
+ </para>
+ </sect2>
</sect1>
</chapter>