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 &amp;= $b</entry>
-        <entry>$a = $a &amp; $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 &lt;&lt;= $b</entry>
-        <entry>$a = $a &lt;&lt; $b</entry>
-        <entry>Побитовый сдвиг влево</entry>
-       </row>
-       <row>
-        <entry>$a &gt;&gt;= $b</entry>
-        <entry>$a = $a &gt;&gt; $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 &amp;= $b</entry>
+       <entry>$a = $a &amp; $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 &lt;&lt;= $b</entry>
+       <entry>$a = $a &lt;&lt; $b</entry>
+       <entry>Побитовый сдвиг влево</entry>
+      </row>
+      <row>
+       <entry>$a &gt;&gt;= $b</entry>
+       <entry>$a = $a &gt;&gt; $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 &lt;=&gt; $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>