svn: /phpdoc/ru/trunk/language/ constants.xml

[email protected] (Sergey Panteleev) Thu, 19 Nov 2020 13:27:26 +0000
Newsgroups php.doc.ru
Message-ID <[email protected]>
sergey                                   Thu, 19 Nov 2020 13:27:26 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=351450

Log:
docs(ru): Updated to English revision

Changed paths:
    U   phpdoc/ru/trunk/language/constants.xml
svn-diffs-351450.txt (text/x-diff, 17.1 KB)
Modified: phpdoc/ru/trunk/language/constants.xml
===================================================================
--- phpdoc/ru/trunk/language/constants.xml	2020-11-19 11:30:40 UTC (rev 351449)
+++ phpdoc/ru/trunk/language/constants.xml	2020-11-19 13:27:26 UTC (rev 351450)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- $Revision$ -->
-<!-- EN-Revision: 347270 Maintainer: sergey Status: ready -->
+<!-- EN-Revision: 351340 Maintainer: sergey Status: ready -->
 <!-- Reviewed: no -->

 <chapter xml:id="language.constants" xmlns="http://docbook.org/ns/docbook">
@@ -11,9 +11,17 @@
   их значение не может изменится в ходе выполнения скрипта
   (кроме <link linkend="language.constants.predefined">магических констант</link>,
   которые на самом деле не являются константами).
-  Имена констант по умолчанию чувствительны к регистру. По принятому соглашению, имена констант
+  Константы чувствительны к регистру. По принятому соглашению, имена констант
   всегда пишутся в верхнем регистре.
  </simpara>
+
+ <note>
+   <para>
+    До PHP 8.0.0 константы, определенные с помощью функции <function>define</function>,
+    могли быть нечувствительными к регистру.
+   </para>
+  </note>
+
  <para>
   Имя константы должно соответствовать тем же правилам именования, что
   и другие имена в PHP. Правильное имя начинается с буквы или символа подчеркивания,
@@ -24,12 +32,13 @@
  <para>
   Возможно определить константы с помощью функции
   <function>define</function> зарезервированными или
-  даже некорректными именами, значения которых могут быть (только) получены
-  через функцию
+  даже некорректными именами, значения которых могут быть получены только
+  с помощью
   <function>constant</function>. Однако, делать это не рекомендуется.
  </para>
  &tip.userlandnaming;
  <para>
+  <!-- TODO Move into syntax section? -->
   <example>
    <title>Правильные и неправильные имена констант</title>
    <programlisting role="php">
@@ -63,27 +72,33 @@

  <simpara>
   Как и &link.superglobals;, константы доступны из любой области видимости.
-  Вы можете использовать константы в любом месте вашего скрипта, не обращая
-  внимания на текущую область видимости.
+  Константы можно использовать из любого места скрипта независимо от области видимости.
   Подробную информацию об областях видимости можно найти
   <link linkend="language.variables.scope">здесь</link>.
  </simpara>

+ <note>
+   <simpara>
+    Начиная с PHP 7.4.0, константе класса можно объявлять видимость защищенная
+    или закрытая, делая ее доступной только в иерархической области видимости
+    класса, в котором она определена.
+   </simpara>
+  </note>
+
  <sect1 xml:id="language.constants.syntax">
   <title>Синтаксис</title>
   <simpara>
-   Вы можете определить константу с помощью функции <function>define</function>
-   или с помощью ключевого слова <literal>const</literal> вне объявления класса
-   с PHP 5.3.0. В то время как <function>define</function> позволяет
+   Константа может быть определена с помощью ключевого слова <literal>const</literal>
+   или с помощью функции <function>define</function>.
+   В то время как <function>define</function> позволяет
    задать константу через выражение, конструкция <literal>const</literal> ограничена
    как описано в следующем параграфе. После того, как константа определена, ее значение
    не может быть изменено или аннулировано.
   </simpara>
   <simpara>
-   Если использована конструкция <literal>const</literal>, константы могут содержать только
-   скалярные данные (типы <type>boolean</type>, <type>integer</type>, <type>float</type> и
-   <type>string</type>). С PHP 5.6 возможно определить константу
-   как скалярное выражение, а также определить константу с типом <type>array</type>.
+   При использовании ключевого слова <literal>const</literal> допускаются
+   только скалярные выражения (<type>bool</type>, <type>int</type>, <type>float</type> и <type>string</type>) и константы <type>array</type>,
+   содержащие только скалярные выражения.
    Можно определить константы с типом <type>resource</type>, но не рекомендуется,
    так как это может привести к неожиданным результатам.
   </simpara>
@@ -91,11 +106,12 @@
    Получить значение константы можно, указав ее имя. В отличие от переменных,
    вам <emphasis>не нужно</emphasis> предварять имя константы символом
    <literal>$</literal>.
-   Также вы можете использовать функцию <function>constant</function> для
+   Также можно использовать функцию <function>constant</function> для
    получения значения константы, если вы формируете имя константы динамически.
    Используйте функцию <function>get_defined_constants</function> для получения
    списка всех определенных констант.
   </simpara>
+
   <note>
    <simpara>
     Константы и (глобальные) переменные находятся в разных пространствах имен.
@@ -103,22 +119,26 @@
     отличаются.
    </simpara>
   </note>
+
   <simpara>
-   Если вы используете неопределенную константу, PHP предполагает, что
-   вы имеете ввиду само имя константы, как если бы вы указали литерал типа
-   <type>string</type> (CONSTANT вместо "CONSTANT"). Этот резервный вариант
-   объявлен устаревшим с PHP 7.2.0, при этом будет сгенерирована ошибка
-   уровня <constant>E_WARNING</constant> при его использовании
-   (ранее вместо этого выдавалась ошибка уровня
-   <link linkend="ref.errorfunc">E_NOTICE</link>). Смотрите также главу
-   руководства, которая разъясняет, почему
-   <link linkend="language.types.array.foo-bar">$foo[bar]</link> - это неправильно
-   (конечно, если вы перед этим не объявили <literal>bar</literal> как константу с
-   помощью <function>define</function>). Это не относится к <link
-   linkend="language.namespaces.rules">(полностью) определенным константам</link>,
-   которые вызовут фатальную ошибку, если они не определены.
-   Если вы просто хотите проверить, определена ли константа, используйте функцию <function>defined</function>.
+   Если используется неопределенная константа, выбрасывается <classname>Error</classname>.
+   До PHP 8.0.0 неопределенные константы интерпретировались как простое слово <type>string</type>, то есть (CONSTANT vs "CONSTANT").
+   Этот резервный вариант объявлен устаревшим с PHP 7.2.0, при этом будет
+   сгенерирована ошибка уровня <constant>E_WARNING</constant>.
+   До PHP 7.2.0 вместо этого выдавалась ошибка уровня <link linkend="ref.errorfunc">E_NOTICE</link>.
+   Смотрите также главу руководства, которая разъясняет, почему
+   <link linkend="language.types.array.foo-bar">$foo[bar]</link> - это неправильно (если <literal> bar </literal> не является константой).
+   Это не относится к <link
+   linkend="language.namespaces.rules">(полностью) определенным константам</link>,
+   которые всегда будут выбрасывать <classname>Error</classname>, если они не определены.
   </simpara>
+
+   <note>
+    <simpara>
+     Чтобы проверить, установлена ли константа, используйте функцию <function>defined</function>.
+    </simpara>
+   </note>
+
   <para>
    Различия между константами и переменными:
    <itemizedlist>
@@ -129,12 +149,6 @@
     </listitem>
     <listitem>
      <simpara>
-      До PHP 5.3 константы можно определить только с помощью функции
-      <function>define</function>, а не присваиванием значения;
-     </simpara>
-    </listitem>
-    <listitem>
-     <simpara>
       Константы могут быть определены и доступны в любом месте без учета
       области видимости;
      </simpara>
@@ -146,11 +160,7 @@
     </listitem>
     <listitem>
      <simpara>
-      Константы могут иметь только скалярные значения. С версии PHP 5.6 возможно задать
-      константу массивом, используя <literal>const</literal>, а с PHP 7 константы с массивом
-      можно определить с помощью <function>define</function>.
-      Вы можете использовать массивы при задании констант, если результат выражения
-      будет допустимого типа. Например, <literal>const FOO = array(1,2,3)[0];</literal>.
+      Константы могут иметь только скалярные значения или массивы.
      </simpara>
     </listitem>
    </itemizedlist>
@@ -164,7 +174,8 @@
 <?php
 define("CONSTANT", "Здравствуй, мир.");
 echo CONSTANT; // выводит "Здравствуй, мир."
-echo Constant; // выводит "Constant" и предупреждение.
+echo Constant; // Выбросит ошибку: Неопределенная константа "Constant"
+               // До PHP 8.0.0 выводит "Constant" и выдает предупреждение.
 ?>
 ]]>
     </programlisting>
@@ -177,12 +188,12 @@
     <programlisting role="php">
 <![CDATA[
 <?php
-// Работает, начиная с версии PHP 5.3.0
+// Простое скалярное значение
 const CONSTANT = 'Здравствуй, мир.';

 echo CONSTANT;

-// Работает, начиная с версии PHP 5.6.0
+// Скалярное выражение
 const ANOTHER_CONST = CONSTANT.'; Прощай, мир.';
 echo ANOTHER_CONST;

@@ -189,7 +200,7 @@
 const ANIMALS = array('dog', 'cat', 'bird');
 echo ANIMALS[1]; // выводит "cat"

-// Работает в PHP 7
+// Массивы в константе
 define('ANIMALS', array(
     'dog',
     'cat',
@@ -213,21 +224,18 @@
    </para>
   </note>

-  <note>
-   <para>
-    Константы, определенные с помощью ключевого слова <literal>const</literal>
-    всегда регистрозависимы. Тогда как при использовании <function>define</function>
-    они могут быть нечувствительны к регистру.
-   </para>
-  </note>
-
-  <simpara>
-   Смотрите также <link linkend="language.oop5.constants">Константы классов</link>.
-  </simpara>
+  <sect2 role="seealso">
+    &reftitle.seealso;
+    <para>
+     <simplelist>
+      <member><link linkend="language.oop5.constants">Константы классов</link></member>
+     </simplelist>
+    </para>
+   </sect2>
  </sect1>

  <sect1 xml:id="language.constants.predefined">
-  <title>Волшебные константы</title>
+  <title>Магические константы</title>

   <simpara>
    PHP предоставляет большой список <link linkend="reserved.constants">
@@ -248,12 +256,12 @@
   </para>
   <para>
    <table>
-    <title>Некоторые магические константы PHP</title>
+    <title>Магические константы PHP</title>
     <tgroup cols="2">
      <thead>
       <row>
-       <entry>Имя</entry>
-       <entry>Описание</entry>
+        <entry>&Name;</entry>
+        <entry>&Description;</entry>
       </row>
      </thead>
      <tbody>
@@ -290,8 +298,7 @@
        <entry>
         Имя класса. Это имя содержит название пространства имен, в котором класс был объявлен
         (например, <literal>Foo\Bar</literal>).
-        Обратите внимание, что начиная с PHP 5.4 __CLASS__ также работает в
-        трейтах. При использовании в методах трейтов __CLASS__ является именем
+        При использовании в методах трейтов __CLASS__ является именем
         класса, в котором эти методы используется.
        </entry>
       </row>
@@ -315,61 +322,29 @@
        </entry>
       </row>
       <row xml:id="constant.coloncolonclass">
-       <entry><constant>ClassName::class</constant></entry>
-       <entry>
-        Полное имя класса (с указанием пространства имен). См. также
-        <link linkend="language.oop5.basic.class.class">::class</link>.
-       </entry>
-      </row>
+        <entry><constant><replaceable>ClassName</replaceable>::class</constant></entry>
+        <entry>
+         Полное имя класса.
+        </entry>
+       </row>
      </tbody>
     </tgroup>
    </table>
   </para>
-  <!-- <link linkend="language.oop5.basic.class.class">::class</link> -->
-  <para>
-   Смотрите также
-   <function>get_class</function>,
-   <function>get_object_vars</function>,
-   <function>file_exists</function>&listendand;
-   <function>function_exists</function>.
-  </para>

-  <sect2 xml:id="language.constants.predefined.changelog">
-   &reftitle.changelog;
-
-   <para>
-    <informaltable>
-     <tgroup cols="2">
-      <thead>
-       <row>
-        <entry>&Version;</entry>
-        <entry>&Description;</entry>
-       </row>
-      </thead>
-      <tbody>
-       <row>
-        <entry>5.5.0</entry>
-        <entry>
-         Добавлена магическая константа <constant>::class</constant>
-        </entry>
-       </row>
-       <row>
-        <entry>5.4.0</entry>
-        <entry>
-         Добавлена константа <constant>__TRAIT__</constant>
-        </entry>
-       </row>
-       <row>
-        <entry>5.3.0</entry>
-        <entry>
-         Добавлены константы <constant>__DIR__</constant> и <constant>__NAMESPACE__</constant>
-        </entry>
-       </row>
-      </tbody>
-     </tgroup>
-    </informaltable>
-   </para>
-  </sect2>
+  <sect2 role="seealso">
+    &reftitle.seealso;
+    <para>
+     <simplelist>
+      <member><link linkend="language.oop5.basic.class.class">::class</link></member>
+      <member><function>get_class</function></member>
+      <member><function>get_object_vars</function></member>
+      <member><function>file_exists</function></member>
+      <member><function>function_exists</function></member>
+     </simplelist>
+    </para>
+   </sect2>
+
  </sect1>
 </chapter>