com doc/ru: Обновлен ие до англи йской верси и: language/oop5/basic.xml language/oop5/cloni ng.xml language/oop5/decon.xml
language/oop5/final .xml language/oop5/interfaces.xml language/oop5/lat e-static-bindings.xml language/oop5/magic.xml languag e/oop5/overloading.xml
language/oop5/serialization.xm l language/oop5/traits.xml reference/iconv/functions/ic onv-mime-decode-headers.xml reference/misc/functions/usleep
.xml reference/opcache/ini.xml reference/
| From: | Sergey Panteleev | Date: | Mon, 08 Mar 2021 11:52:00 +0000 |
| Subject: | com doc/ru: Обновлен ие до англи йской верси и: language/oop5/basic.xml language/oop5/cloni ng.xml language/oop5/decon.xml language/oop5/final .xml language/oop5/interfaces.xml language/oop5/lat e-static-bindings.xml language/oop5/magic.xml languag e/oop5/overloading.xml language/oop5/serialization.xm l language/oop5/traits.xml reference/iconv/functions/ic onv-mime-decode-headers.xml reference/misc/functions/usleep .xml reference/opcache/ini.xml reference/ |
||
| Groups: | php.doc.ru | ||
| Request: | Send a blank email to doc-ru+get-8824@lists.php.net to get a copy of this message | ||
Commit: 94c1ae6978ec67ba7167639672668eb911d5fe02
Author: Sergey Panteleev <sergey@php.net> Mon, 8 Mar 2021 14:49:30 +0300
Parents: 283968a722cf2db894605530f711d4e2841336f8
Branches: master
Link: http://git.php.net/?p=doc/ru.git;a=commitdiff;h=94c1ae6978ec67ba7167639672668eb911d5fe02
Log:
Обновление до английской версии
Changed paths:
M language/oop5/basic.xml
M language/oop5/cloning.xml
M language/oop5/decon.xml
M language/oop5/final.xml
M language/oop5/interfaces.xml
M language/oop5/late-static-bindings.xml
M language/oop5/magic.xml
M language/oop5/overloading.xml
M language/oop5/serialization.xml
M language/oop5/traits.xml
M reference/iconv/functions/iconv-mime-decode-headers.xml
M reference/misc/functions/usleep.xml
M reference/opcache/ini.xml
M reference/outcontrol/functions/ob-implicit-flush.xml
diff --git a/language/oop5/basic.xml b/language/oop5/basic.xml index d4b02477d..ec8788be1 100644 --- a/language/oop5/basic.xml +++ b/language/oop5/basic.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- $Revision$ --> -<!-- EN-Revision: 02f3bf57175c48abff767ad2c0961c6cfe58a39e Maintainer: sergey Status: ready --> +<!-- EN-Revision: 9ee9eccf455188ab6eb352194eb6f9eb99e15606 Maintainer: sergey Status: ready --> <!-- Reviewed: no --> <sect1 xml:id="language.oop5.basic" xmlns="http://docbook.org/ns/docbook"> <title>Основы</title> @@ -556,8 +556,9 @@ Stack trace: <para> Ключевое слово <literal>class</literal> используется - для разрешения имени класса. С помощью конструкции <literal>ClassName::class</literal> - можно получить строку с абсолютным именем класса <literal>ClassName</literal>. + для разрешения имени класса. + Чтобы получить полное имя класса <literal>ClassName::class</literal>, + используйте <literal>ClassName::class</literal>. Обычно это довольно полезно при работе с классами, использующими <link linkend="language.namespaces">пространства имён</link>. </para> diff --git a/language/oop5/cloning.xml b/language/oop5/cloning.xml index 337c4a99e..b73e377d6 100644 --- a/language/oop5/cloning.xml +++ b/language/oop5/cloning.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- EN-Revision: a9edd62d087ab1eb6292c795b7256e14ff9f1234 Maintainer: shein Status: ready --> +<!-- EN-Revision: 9ee9eccf455188ab6eb352194eb6f9eb99e15606 Maintainer: shein Status: ready --> <!-- Reviewed: yes --> <!-- $Revision$ --> <sect1 xml:id="language.oop5.cloning" xmlns="http://docbook.org/ns/docbook"> @@ -22,10 +22,9 @@ </para> <para> - Копия объекта создаётся с использованием ключевого слова <emphasis>clone</emphasis> + Копия объекта создаётся с использованием ключевого слова <literal>clone</literal> (который вызывает метод <link linkend="object.clone">__clone()</link> - объекта, если это возможно). Вызов метода <link linkend="object.clone">__clone()</link> - не может быть осуществлён напрямую. + объекта, если это возможно). </para> <informalexample> diff --git a/language/oop5/decon.xml b/language/oop5/decon.xml index fea7d44db..430f2dd69 100644 --- a/language/oop5/decon.xml +++ b/language/oop5/decon.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- EN-Revision: 4317fec7555dd42621f88162cc5068092e5c5cfb Maintainer: shein Status: ready --> +<!-- EN-Revision: 9ee9eccf455188ab6eb352194eb6f9eb99e15606 Maintainer: shein Status: ready --> <!-- Reviewed: yes --> <!-- $Revision$ --> <sect1 xml:id="language.oop5.decon" xmlns="http://docbook.org/ns/docbook"> @@ -169,8 +169,7 @@ class Point { </note> <note> <para> - <!-- This should be linked once attributes are documented. --> - Атрибуты, заданные для таких аргументов, будут применены как для них самих, так и для + <link linkend="language.attributes">Атрибуты</link>, заданные для таких аргументов, будут применены как для них самих, так и для соответствующих свойств. </para> </note> @@ -208,7 +207,7 @@ class Product { } public static function fromXml(string $xml): static { - // Put your own logic here. + // Пользовательская логика. $data = convert_xml_to_array($xml); $new = new static(); $new->id = $data['id']; diff --git a/language/oop5/final.xml b/language/oop5/final.xml index 3b44d84e6..32632af00 100644 --- a/language/oop5/final.xml +++ b/language/oop5/final.xml @@ -1,11 +1,11 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- EN-Revision: a9edd62d087ab1eb6292c795b7256e14ff9f1234 Maintainer: shein Status: ready --> +<!-- EN-Revision: 9ee9eccf455188ab6eb352194eb6f9eb99e15606 Maintainer: shein Status: ready --> <!-- Reviewed: yes --> <!-- $Revision$ --> <sect1 xml:id="language.oop5.final" xmlns="http://docbook.org/ns/docbook"> <title>Ключевое слово final</title> <para> - PHP предоставляет ключевое слово <emphasis>final</emphasis>, разместив которое + PHP предоставляет ключевое слово <literal>final</literal>, разместив которое перед объявлениями методов класса, можно предотвратить их переопределение в дочерних классах. Если же сам класс определяется с этим ключевым словом, то он не сможет быть унаследован. @@ -49,7 +49,7 @@ final class BaseClass { echo "Вызван метод BaseClass::test()\n"; } - // В данном случае неважно, укажете ли вы этот метод как final или нет + // Поскольку класс уже является final, ключевое слово final является избыточным final public function moreTesting() { echo "BaseClass::moreTesting() called\n"; } diff --git a/language/oop5/interfaces.xml b/language/oop5/interfaces.xml index 3d29f825f..18b217e74 100644 --- a/language/oop5/interfaces.xml +++ b/language/oop5/interfaces.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- EN-Revision: 4317fec7555dd42621f88162cc5068092e5c5cfb Maintainer: shein Status: ready --> +<!-- EN-Revision: 9ee9eccf455188ab6eb352194eb6f9eb99e15606 Maintainer: shein Status: ready --> <!-- Reviewed: yes --> <!-- $Revision$ --> <sect1 xml:id="language.oop5.interfaces" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> @@ -18,10 +18,16 @@ Все методы, определённые в интерфейсах должны быть общедоступными, что следует из самой природы интерфейса. </para> - <para> - Обратите внимание, что возможно объявить <link + + <note> + <para> + возможно объявить + <link linkend="language.oop5.magic">магические методы</link>, также + как и <link linkend="language.oop5.decon.constructor">конструктор</link> в интерфейсе, который может быть полезен для некоторых задач, например, при реализации фабрик. - </para> + </para> + </note> + <sect2 xml:id="language.oop5.interfaces.implements"> <title><literal>implements</literal></title> <para> diff --git a/language/oop5/late-static-bindings.xml b/language/oop5/late-static-bindings.xml index b258e391b..8f6635204 100644 --- a/language/oop5/late-static-bindings.xml +++ b/language/oop5/late-static-bindings.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- EN-Revision: a9edd62d087ab1eb6292c795b7256e14ff9f1234 Maintainer: mch Status: ready --> +<!-- EN-Revision: 9ee9eccf455188ab6eb352194eb6f9eb99e15606 Maintainer: mch Status: ready --> <!-- Reviewed: yes --> <!-- $Revision$ --> <sect1 xml:id="language.oop5.late-static-bindings" xmlns="http://docbook.org/ns/docbook"> diff --git a/language/oop5/magic.xml b/language/oop5/magic.xml index dccf9c7d4..2a4d00868 100644 --- a/language/oop5/magic.xml +++ b/language/oop5/magic.xml @@ -1,11 +1,21 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- EN-Revision: a9edd62d087ab1eb6292c795b7256e14ff9f1234 Maintainer: irker Status: ready --> +<!-- EN-Revision: 9ee9eccf455188ab6eb352194eb6f9eb99e15606 Maintainer: irker Status: ready --> <!-- Reviewed: yes --> <!-- $Revision$ --> <sect1 xml:id="language.oop5.magic" xmlns="http://docbook.org/ns/docbook"> <title>Магические методы</title> <para> - Имена функций + Магические методы - это специальные методы, которые переопределяют действие PHP по умолчанию, когда над объектом выполняются определённые действия. + </para> + <caution> + <simpara> + Все имена методов, начинающиеся с <literal>__</literal>, зарезервированы PHP. + Не рекомендуется использовать имена методов с __ в PHP, если вы не хотите использовать соответствующую + магическую функциональность. + </simpara> + </caution> + <para> + Следующие названия методов считаются магическими: <link linkend="object.construct">__construct()</link>, <link linkend="object.destruct">__destruct()</link>, <link linkend="object.call">__call()</link>, @@ -23,25 +33,32 @@ <link linkend="object.set-state">__set_state()</link>, <link linkend="object.clone">__clone()</link> и <link linkend="object.debuginfo">__debugInfo()</link> - являются магическими в PHP. - Не стоит называть свои методы этими именами, если вы не хотите - использовать их магическую функциональность. </para> - <note> + <warning> <simpara> - Все магические методы <emphasis>ДОЛЖНЫ</emphasis> быть объявлены как <literal>public</literal>. + Все магические методы, за исключением + <link linkend="object.construct">__construct()</link>, + <link linkend="object.destruct">__destruct()</link> и + <link linkend="object.clone">__clone()</link>, + <emphasis>ДОЛЖНЫ</emphasis> быть объявлены как <literal>public</literal>, + в противном случае будет вызвана ошибка уровня <constant>E_WARNING</constant>. + До PHP 8.0.0 для магических методов + <link linkend="object.sleep">__sleep()</link>, + <link linkend="object.wakeup">__wakeup()</link>, + <link linkend="object.serialize">__serialize()</link>, + <link linkend="object.unserialize">__unserialize()</link> и + <link linkend="object.set-state">__set_state()</link> + не выполнялась проверка. </simpara> - </note> - - <caution> - <simpara> - PHP оставляет за собой право все методы, начинающиеся с __, - считать магическими. Не рекомендуется использовать имена - методов с __ в PHP, если вы не желаете использовать соответствующую - магическую функциональность. - </simpara> - </caution> + </warning> + <warning> + <para> + Если объявления типа используются в определении магического метода, они должны быть идентичны сигнатуре, описанной в этом документе. + В противном случае выдается фатальная ошибка. + До PHP 8.0.0 диагностические сообщения не отправлялись. + </para> + </warning> <sect2 xml:id="language.oop5.magic.sleep"> <title> @@ -72,8 +89,8 @@ Недопустимо возвращать в <link linkend="object.sleep">__sleep()</link> имена закрытых свойств в родительском классе. Это приведёт к ошибке уровня <constant>E_NOTICE</constant>. - Вместо этого вы можете использовать интерфейс - <classname>Serializable</classname>. + Вместо этого вы можете использовать + <link linkend="object.serialize">__serialize()</link>. </para> </note> <para> @@ -229,7 +246,7 @@ class Connection } }?> ]]> - </programlisting> + </programlisting> </example> </sect2> @@ -242,11 +259,24 @@ class Connection <para> Метод <link linkend="object.tostring">__toString()</link> позволяет классу решать, как он должен реагировать при преобразовании в - строку. Например, что вывести при выполнении <literal>echo $obj;</literal>. Этот метод - должен возвращать строку, иначе произойдёт фатальная ошибка уровня - <constant>E_RECOVERABLE_ERROR</constant>. + строку. Например, что вывести при выполнении <literal>echo $obj;</literal>. </para> <warning> + <para> + Начиная с PHP 8.0.0, возвращаемое значение следует стандартной семантике типа PHP, + что означает, что оно будет преобразовано в строку (<type>string</type>), если возможно, + и если <link linkend="language.types.declarations.strict">strict typing</link> отключён. + </para> + <para> + В PHP 7.4 возвращаемое значение <emphasis>ДОЛЖНО</emphasis> быть строкой (<type>string</type>), иначе выдается <classname>Error</classname>. + </para> + <para> + До PHP 7.4.0 возвращаемое значение <emphasis>должно</emphasis> быть + строкой (<type>string</type>), в противном случае выдается фатальная ошибка <constant>E_RECOVERABLE_ERROR</constant>. + is emitted. + </para> + </warning> + <warning> <simpara> Нельзя выбросить исключение из метода <link linkend="object.tostring">__toString()</link> до PHP 7.4.0. Это приведёт к фатальной ошибке. </simpara> @@ -337,7 +367,7 @@ bool(true) </para> <para> Единственный параметр этого метода является массив, содержащий экспортируемые - свойства в виде <literal>array('property' => value, ...)</literal>. + свойства в виде <literal>['property' => value, ...]</literal>. </para> <example> <title>Использование <link linkend="object.set-state">__set_state()</link></title> @@ -363,18 +393,20 @@ $a = new A; $a->var1 = 5; $a->var2 = 'foo'; -eval('$b = ' . var_export($a, true) . ';'); // $b = A::__set_state(array( - // 'var1' => 5, - // 'var2' => 'foo', - // )); +$b = var_export($a, true); var_dump($b); - +eval('$c = ' . $b . ';'); +var_dump($c); ?> ]]> </programlisting> &example.outputs; <screen> <![CDATA[ +string(60) "A::__set_state(array( + 'var1' => 5, + 'var2' => 'foo', +))" object(A)#2 (2) { ["var1"]=> int(5) diff --git a/language/oop5/overloading.xml b/language/oop5/overloading.xml index 2b6360dc5..d8512120a 100644 --- a/language/oop5/overloading.xml +++ b/language/oop5/overloading.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- EN-Revision: a9edd62d087ab1eb6292c795b7256e14ff9f1234 Maintainer: shein Status: ready --> +<!-- EN-Revision: 9ee9eccf455188ab6eb352194eb6f9eb99e15606 Maintainer: shein Status: ready --> <!-- Reviewed: yes Maintainer: lex --> <!-- $Revision$ --> <sect1 xml:id="language.oop5.overloading" xmlns="http://docbook.org/ns/docbook"> @@ -269,7 +269,6 @@ class MethodTest { . implode(', ', $arguments). "\n"; } - /** Начиная с PHP 5.3.0 */ public static function __callStatic($name, $arguments) { // Замечание: значение $name регистрозависимо. echo "Вызов статического метода '$name' " diff --git a/language/oop5/serialization.xml b/language/oop5/serialization.xml index ccc443808..2cf3bf8f1 100644 --- a/language/oop5/serialization.xml +++ b/language/oop5/serialization.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- EN-Revision: a9edd62d087ab1eb6292c795b7256e14ff9f1234 Maintainer: mch Status: ready --> +<!-- EN-Revision: 9ee9eccf455188ab6eb352194eb6f9eb99e15606 Maintainer: mch Status: ready --> <!-- $Revision$ --> <!-- Reviewed: yes Maintainer: lex --> <sect1 xml:id="language.oop5.serialization" xmlns="http://docbook.org/ns/docbook"> diff --git a/language/oop5/traits.xml b/language/oop5/traits.xml index f73a47700..458d4880c 100644 --- a/language/oop5/traits.xml +++ b/language/oop5/traits.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- EN-Revision: a9edd62d087ab1eb6292c795b7256e14ff9f1234 Maintainer: mch Status: ready --> +<!-- EN-Revision: 9ee9eccf455188ab6eb352194eb6f9eb99e15606 Maintainer: mch Status: ready --> <!-- Reviewed: yes --> <!-- $Revision$ --> <sect1 xml:id="language.oop5.traits" xmlns="http://docbook.org/ns/docbook"> @@ -461,7 +461,7 @@ trait PropertiesTrait { class PropertiesExample { use PropertiesTrait; - public $same = true; // Допустимо с PHP 7.0.0. В более ранних версиях ошибка уровня E_STRICT + public $same = true; public $different = true; // Фатальная ошибка } ?> diff --git a/reference/iconv/functions/iconv-mime-decode-headers.xml b/reference/iconv/functions/iconv-mime-decode-headers.xml index 6c0c2ab08..561081f26 100644 --- a/reference/iconv/functions/iconv-mime-decode-headers.xml +++ b/reference/iconv/functions/iconv-mime-decode-headers.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- EN-Revision: ab9a7d2e3dfa9224186abcbd7a43b3af08d1bfdb Maintainer: shein Status: ready --> +<!-- EN-Revision: d7dbb4196a9aa0f95732f0a19106ee6db51f0bf9 Maintainer: shein Status: ready --> <!-- Reviewed: no --> <!-- $Revision$ --> <refentry xml:id="function.iconv-mime-decode-headers" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> @@ -107,6 +107,7 @@ <function>iconv_mime_decode_headers</function> автоматически помещает их в подмассив с числовыми индексами в порядке их обработки. + Обратите внимание, что имена заголовков не <emphasis>нечувствительны к регистру</emphasis>. </para> </refsect1> diff --git a/reference/misc/functions/usleep.xml b/reference/misc/functions/usleep.xml index 30920099c..5a88c9bd9 100644 --- a/reference/misc/functions/usleep.xml +++ b/reference/misc/functions/usleep.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- EN-Revision: 0c9c2dd669fe9395eaa73d487fbd160f9057429a Maintainer: aur Status: ready --> +<!-- EN-Revision: 95bc76b545a00d436239af6d5516f75ff890df56 Maintainer: aur Status: ready --> <!-- Reviewed: yes Maintainer: lex --> <!-- $Revision$ --> <refentry xml:id="function.usleep" xmlns="http://docbook.org/ns/docbook"> @@ -32,6 +32,13 @@ </para> <note> <simpara> + Значения больше <literal>1000000</literal> (т.е. ожидание более секунды) + могут не поддерживаться операционной системой. + Вместо этого используйте <function>sleep</function>. + </simpara> + </note> + <note> + <simpara> В Windows система может откладывать исполнение дольше указанного количества микросекунд, в зависимости от аппаратного обеспечения. </simpara> diff --git a/reference/opcache/ini.xml b/reference/opcache/ini.xml index 203cefcd6..7c81d76df 100644 --- a/reference/opcache/ini.xml +++ b/reference/opcache/ini.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- $Revision$ --> -<!-- EN-Revision: a5a946a88e643b79d2c4c867d0213521be98df35 Maintainer: rjhdby Status: ready --> +<!-- EN-Revision: 7c6c83d08e97007ca75f739873f8125c6c0640cf Maintainer: rjhdby Status: ready --> <!-- Reviewed: yes Maintainer: lex --> <sect1 xml:id="opcache.configuration" xmlns="http://docbook.org/ns/docbook"> @@ -929,6 +929,13 @@ под одной и той же учётной записью пользователя с одинаковым идентификатором кеша, совместно используют один экземпляр OPcache. Значение идентификатора кеша может быть свободно выбрано. </para> + <tip> + <simpara> + Для IIS разные пулы приложений могут иметь собственный экземпляр OPcache, + используя переменную среды <envar>APP_POOL_ID</envar> как + <parameter>opcache.cache_id</parameter>. + </simpara> + </tip> </listitem> </varlistentry> <varlistentry xml:id="ini.opcache.jit"> diff --git a/reference/outcontrol/functions/ob-implicit-flush.xml b/reference/outcontrol/functions/ob-implicit-flush.xml index 841cfc2bd..1a123f1b1 100644 --- a/reference/outcontrol/functions/ob-implicit-flush.xml +++ b/reference/outcontrol/functions/ob-implicit-flush.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- EN-Revision: 596b022270dea3739577b553fef56675e573f0b2 Maintainer: mch Status: ready --> +<!-- EN-Revision: 537b504c17430646ecb25783ce564a0af4553fb3 Maintainer: mch Status: ready --> <!-- $Revision$ --> <!-- Reviewed: yes Maintainer: lex --> <refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.ob-implicit-flush"> @@ -12,7 +12,7 @@ &reftitle.description; <methodsynopsis> <type>void</type><methodname>ob_implicit_flush</methodname> - <methodparam choice="opt"><type>int</type><parameter>flag</parameter><initializer>1</initializer></methodparam> + <methodparam choice="opt"><type>bool</type><parameter>flag</parameter><initializer>true</initializer></methodparam> </methodsynopsis> <para> <function>ob_implicit_flush</function> включает или выключает неявный @@ -30,7 +30,7 @@ <term><parameter>flag</parameter></term> <listitem> <para> - <literal>1</literal> для включения неявного сброса, <literal>0</literal> в противном случае. + <literal>1</literal> для включения неявного сброса, <literal>false</literal> в противном случае. </para> </listitem> </varlistentry> @@ -45,6 +45,29 @@ </para> </refsect1> + <refsect1 role="changelog"> + &reftitle.changelog; + <informaltable> + <tgroup cols="2"> + <thead> + <row> + <entry>&Version;</entry> + <entry>&Description;</entry> + </row> + </thead> + <tbody> + <row> + <entry>8.0.0</entry> + <entry> + <parameter>flag</parameter> теперь принимает логическое значение (<type>bool</type>); + ранее принималось целое число (<type>int</type>). + </entry> + </row> + </tbody> + </tgroup> + </informaltable> + </refsect1> + <refsect1 role="seealso"> &reftitle.seealso; <para>
diff --git a/language/oop5/basic.xml b/language/oop5/basic.xml index d4b02477d..ec8788be1 100644 --- a/language/oop5/basic.xml +++ b/language/oop5/basic.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- $Revision$ --> -<!-- EN-Revision: 02f3bf57175c48abff767ad2c0961c6cfe58a39e Maintainer: sergey Status: ready --> +<!-- EN-Revision: 9ee9eccf455188ab6eb352194eb6f9eb99e15606 Maintainer: sergey Status: ready --> <!-- Reviewed: no --> <sect1 xml:id="language.oop5.basic" xmlns="http://docbook.org/ns/docbook"> <title>Основы</title> @@ -556,8 +556,9 @@ Stack trace: <para> Ключевое слово <literal>class</literal> используется - для разрешения имени класса. С помощью конструкции <literal>ClassName::class</literal> - можно получить строку с абсолютным именем класса <literal>ClassName</literal>. + для разрешения имени класса. + Чтобы получить полное имя класса <literal>ClassName::class</literal>, + используйте <literal>ClassName::class</literal>. Обычно это довольно полезно при работе с классами, использующими <link linkend="language.namespaces">пространства имён</link>. </para> diff --git a/language/oop5/cloning.xml b/language/oop5/cloning.xml index 337c4a99e..b73e377d6 100644 --- a/language/oop5/cloning.xml +++ b/language/oop5/cloning.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- EN-Revision: a9edd62d087ab1eb6292c795b7256e14ff9f1234 Maintainer: shein Status: ready --> +<!-- EN-Revision: 9ee9eccf455188ab6eb352194eb6f9eb99e15606 Maintainer: shein Status: ready --> <!-- Reviewed: yes --> <!-- $Revision$ --> <sect1 xml:id="language.oop5.cloning" xmlns="http://docbook.org/ns/docbook"> @@ -22,10 +22,9 @@ </para> <para> - Копия объекта создаётся с использованием ключевого слова <emphasis>clone</emphasis> + Копия объекта создаётся с использованием ключевого слова <literal>clone</literal> (который вызывает метод <link linkend="object.clone">__clone()</link> - объекта, если это возможно). Вызов метода <link linkend="object.clone">__clone()</link> - не может быть осуществлён напрямую. + объекта, если это возможно). </para> <informalexample> diff --git a/language/oop5/decon.xml b/language/oop5/decon.xml index fea7d44db..430f2dd69 100644 --- a/language/oop5/decon.xml +++ b/language/oop5/decon.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- EN-Revision: 4317fec7555dd42621f88162cc5068092e5c5cfb Maintainer: shein Status: ready --> +<!-- EN-Revision: 9ee9eccf455188ab6eb352194eb6f9eb99e15606 Maintainer: shein Status: ready --> <!-- Reviewed: yes --> <!-- $Revision$ --> <sect1 xml:id="language.oop5.decon" xmlns="http://docbook.org/ns/docbook"> @@ -169,8 +169,7 @@ class Point { </note> <note> <para> - <!-- This should be linked once attributes are documented. --> - Атрибуты, заданные для таких аргументов, будут применены как для них самих, так и для + <link linkend="language.attributes">Атрибуты</link>, заданные для таких аргументов, будут применены как для них самих, так и для соответствующих свойств. </para> </note> @@ -208,7 +207,7 @@ class Product { } public static function fromXml(string $xml): static { - // Put your own logic here. + // Пользовательская логика. $data = convert_xml_to_array($xml); $new = new static(); $new->id = $data['id']; diff --git a/language/oop5/final.xml b/language/oop5/final.xml index 3b44d84e6..32632af00 100644 --- a/language/oop5/final.xml +++ b/language/oop5/final.xml @@ -1,11 +1,11 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- EN-Revision: a9edd62d087ab1eb6292c795b7256e14ff9f1234 Maintainer: shein Status: ready --> +<!-- EN-Revision: 9ee9eccf455188ab6eb352194eb6f9eb99e15606 Maintainer: shein Status: ready --> <!-- Reviewed: yes --> <!-- $Revision$ --> <sect1 xml:id="language.oop5.final" xmlns="http://docbook.org/ns/docbook"> <title>Ключевое слово final</title> <para> - PHP предоставляет ключевое слово <emphasis>final</emphasis>, разместив которое + PHP предоставляет ключевое слово <literal>final</literal>, разместив которое перед объявлениями методов класса, можно предотвратить их переопределение в дочерних классах. Если же сам класс определяется с этим ключевым словом, то он не сможет быть унаследован. @@ -49,7 +49,7 @@ final class BaseClass { echo "Вызван метод BaseClass::test()\n"; } - // В данном случае неважно, укажете ли вы этот метод как final или нет + // Поскольку класс уже является final, ключевое слово final является избыточным final public function moreTesting() { echo "BaseClass::moreTesting() called\n"; } diff --git a/language/oop5/interfaces.xml b/language/oop5/interfaces.xml index 3d29f825f..18b217e74 100644 --- a/language/oop5/interfaces.xml +++ b/language/oop5/interfaces.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- EN-Revision: 4317fec7555dd42621f88162cc5068092e5c5cfb Maintainer: shein Status: ready --> +<!-- EN-Revision: 9ee9eccf455188ab6eb352194eb6f9eb99e15606 Maintainer: shein Status: ready --> <!-- Reviewed: yes --> <!-- $Revision$ --> <sect1 xml:id="language.oop5.interfaces" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> @@ -18,10 +18,16 @@ Все методы, определённые в интерфейсах должны быть общедоступными, что следует из самой природы интерфейса. </para> - <para> - Обратите внимание, что возможно объявить <link + + <note> + <para> + возможно объявить + <link linkend="language.oop5.magic">магические методы</link>, также + как и <link linkend="language.oop5.decon.constructor">конструктор</link> в интерфейсе, который может быть полезен для некоторых задач, например, при реализации фабрик. - </para> + </para> + </note> + <sect2 xml:id="language.oop5.interfaces.implements"> <title><literal>implements</literal></title> <para> diff --git a/language/oop5/late-static-bindings.xml b/language/oop5/late-static-bindings.xml index b258e391b..8f6635204 100644 --- a/language/oop5/late-static-bindings.xml +++ b/language/oop5/late-static-bindings.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- EN-Revision: a9edd62d087ab1eb6292c795b7256e14ff9f1234 Maintainer: mch Status: ready --> +<!-- EN-Revision: 9ee9eccf455188ab6eb352194eb6f9eb99e15606 Maintainer: mch Status: ready --> <!-- Reviewed: yes --> <!-- $Revision$ --> <sect1 xml:id="language.oop5.late-static-bindings" xmlns="http://docbook.org/ns/docbook"> diff --git a/language/oop5/magic.xml b/language/oop5/magic.xml index dccf9c7d4..2a4d00868 100644 --- a/language/oop5/magic.xml +++ b/language/oop5/magic.xml @@ -1,11 +1,21 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- EN-Revision: a9edd62d087ab1eb6292c795b7256e14ff9f1234 Maintainer: irker Status: ready --> +<!-- EN-Revision: 9ee9eccf455188ab6eb352194eb6f9eb99e15606 Maintainer: irker Status: ready --> <!-- Reviewed: yes --> <!-- $Revision$ --> <sect1 xml:id="language.oop5.magic" xmlns="http://docbook.org/ns/docbook"> <title>Магические методы</title> <para> - Имена функций + Магические методы - это специальные методы, которые переопределяют действие PHP по умолчанию, когда над объектом выполняются определённые действия. + </para> + <caution> + <simpara> + Все имена методов, начинающиеся с <literal>__</literal>, зарезервированы PHP. + Не рекомендуется использовать имена методов с __ в PHP, если вы не хотите использовать соответствующую + магическую функциональность. + </simpara> + </caution> + <para> + Следующие названия методов считаются магическими: <link linkend="object.construct">__construct()</link>, <link linkend="object.destruct">__destruct()</link>, <link linkend="object.call">__call()</link>, @@ -23,25 +33,32 @@ <link linkend="object.set-state">__set_state()</link>, <link linkend="object.clone">__clone()</link> и <link linkend="object.debuginfo">__debugInfo()</link> - являются магическими в PHP. - Не стоит называть свои методы этими именами, если вы не хотите - использовать их магическую функциональность. </para> - <note> + <warning> <simpara> - Все магические методы <emphasis>ДОЛЖНЫ</emphasis> быть объявлены как <literal>public</literal>. + Все магические методы, за исключением + <link linkend="object.construct">__construct()</link>, + <link linkend="object.destruct">__destruct()</link> и + <link linkend="object.clone">__clone()</link>, + <emphasis>ДОЛЖНЫ</emphasis> быть объявлены как <literal>public</literal>, + в противном случае будет вызвана ошибка уровня <constant>E_WARNING</constant>. + До PHP 8.0.0 для магических методов + <link linkend="object.sleep">__sleep()</link>, + <link linkend="object.wakeup">__wakeup()</link>, + <link linkend="object.serialize">__serialize()</link>, + <link linkend="object.unserialize">__unserialize()</link> и + <link linkend="object.set-state">__set_state()</link> + не выполнялась проверка. </simpara> - </note> - - <caution> - <simpara> - PHP оставляет за собой право все методы, начинающиеся с __, - считать магическими. Не рекомендуется использовать имена - методов с __ в PHP, если вы не желаете использовать соответствующую - магическую функциональность. - </simpara> - </caution> + </warning> + <warning> + <para> + Если объявления типа используются в определении магического метода, они должны быть идентичны сигнатуре, описанной в этом документе. + В противном случае выдается фатальная ошибка. + До PHP 8.0.0 диагностические сообщения не отправлялись. + </para> + </warning> <sect2 xml:id="language.oop5.magic.sleep"> <title> @@ -72,8 +89,8 @@ Недопустимо возвращать в <link linkend="object.sleep">__sleep()</link> имена закрытых свойств в родительском классе. Это приведёт к ошибке уровня <constant>E_NOTICE</constant>. - Вместо этого вы можете использовать интерфейс - <classname>Serializable</classname>. + Вместо этого вы можете использовать + <link linkend="object.serialize">__serialize()</link>. </para> </note> <para> @@ -229,7 +246,7 @@ class Connection } }?> ]]> - </programlisting> + </programlisting> </example> </sect2> @@ -242,11 +259,24 @@ class Connection <para> Метод <link linkend="object.tostring">__toString()</link> позволяет классу решать, как он должен реагировать при преобразовании в - строку. Например, что вывести при выполнении <literal>echo $obj;</literal>. Этот метод - должен возвращать строку, иначе произойдёт фатальная ошибка уровня - <constant>E_RECOVERABLE_ERROR</constant>. + строку. Например, что вывести при выполнении <literal>echo $obj;</literal>. </para> <warning> + <para> + Начиная с PHP 8.0.0, возвращаемое значение следует стандартной семантике типа PHP, + что означает, что оно будет преобразовано в строку (<type>string</type>), если возможно, + и если <link linkend="language.types.declarations.strict">strict typing</link> отключён. + </para> + <para> + В PHP 7.4 возвращаемое значение <emphasis>ДОЛЖНО</emphasis> быть строкой (<type>string</type>), иначе выдается <classname>Error</classname>. + </para> + <para> + До PHP 7.4.0 возвращаемое значение <emphasis>должно</emphasis> быть + строкой (<type>string</type>), в противном случае выдается фатальная ошибка <constant>E_RECOVERABLE_ERROR</constant>. + is emitted. + </para> + </warning> + <warning> <simpara> Нельзя выбросить исключение из метода <link linkend="object.tostring">__toString()</link> до PHP 7.4.0. Это приведёт к фатальной ошибке. </simpara> @@ -337,7 +367,7 @@ bool(true) </para> <para> Единственный параметр этого метода является массив, содержащий экспортируемые - свойства в виде <literal>array('property' => value, ...)</literal>. + свойства в виде <literal>['property' => value, ...]</literal>. </para> <example> <title>Использование <link linkend="object.set-state">__set_state()</link></title> @@ -363,18 +393,20 @@ $a = new A; $a->var1 = 5; $a->var2 = 'foo'; -eval('$b = ' . var_export($a, true) . ';'); // $b = A::__set_state(array( - // 'var1' => 5, - // 'var2' => 'foo', - // )); +$b = var_export($a, true); var_dump($b); - +eval('$c = ' . $b . ';'); +var_dump($c); ?> ]]> </programlisting> &example.outputs; <screen> <![CDATA[ +string(60) "A::__set_state(array( + 'var1' => 5, + 'var2' => 'foo', +))" object(A)#2 (2) { ["var1"]=> int(5) diff --git a/language/oop5/overloading.xml b/language/oop5/overloading.xml index 2b6360dc5..d8512120a 100644 --- a/language/oop5/overloading.xml +++ b/language/oop5/overloading.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- EN-Revision: a9edd62d087ab1eb6292c795b7256e14ff9f1234 Maintainer: shein Status: ready --> +<!-- EN-Revision: 9ee9eccf455188ab6eb352194eb6f9eb99e15606 Maintainer: shein Status: ready --> <!-- Reviewed: yes Maintainer: lex --> <!-- $Revision$ --> <sect1 xml:id="language.oop5.overloading" xmlns="http://docbook.org/ns/docbook"> @@ -269,7 +269,6 @@ class MethodTest { . implode(', ', $arguments). "\n"; } - /** Начиная с PHP 5.3.0 */ public static function __callStatic($name, $arguments) { // Замечание: значение $name регистрозависимо. echo "Вызов статического метода '$name' " diff --git a/language/oop5/serialization.xml b/language/oop5/serialization.xml index ccc443808..2cf3bf8f1 100644 --- a/language/oop5/serialization.xml +++ b/language/oop5/serialization.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- EN-Revision: a9edd62d087ab1eb6292c795b7256e14ff9f1234 Maintainer: mch Status: ready --> +<!-- EN-Revision: 9ee9eccf455188ab6eb352194eb6f9eb99e15606 Maintainer: mch Status: ready --> <!-- $Revision$ --> <!-- Reviewed: yes Maintainer: lex --> <sect1 xml:id="language.oop5.serialization" xmlns="http://docbook.org/ns/docbook"> diff --git a/language/oop5/traits.xml b/language/oop5/traits.xml index f73a47700..458d4880c 100644 --- a/language/oop5/traits.xml +++ b/language/oop5/traits.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- EN-Revision: a9edd62d087ab1eb6292c795b7256e14ff9f1234 Maintainer: mch Status: ready --> +<!-- EN-Revision: 9ee9eccf455188ab6eb352194eb6f9eb99e15606 Maintainer: mch Status: ready --> <!-- Reviewed: yes --> <!-- $Revision$ --> <sect1 xml:id="language.oop5.traits" xmlns="http://docbook.org/ns/docbook"> @@ -461,7 +461,7 @@ trait PropertiesTrait { class PropertiesExample { use PropertiesTrait; - public $same = true; // Допустимо с PHP 7.0.0. В более ранних версиях ошибка уровня E_STRICT + public $same = true; public $different = true; // Фатальная ошибка } ?> diff --git a/reference/iconv/functions/iconv-mime-decode-headers.xml b/reference/iconv/functions/iconv-mime-decode-headers.xml index 6c0c2ab08..561081f26 100644 --- a/reference/iconv/functions/iconv-mime-decode-headers.xml +++ b/reference/iconv/functions/iconv-mime-decode-headers.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- EN-Revision: ab9a7d2e3dfa9224186abcbd7a43b3af08d1bfdb Maintainer: shein Status: ready --> +<!-- EN-Revision: d7dbb4196a9aa0f95732f0a19106ee6db51f0bf9 Maintainer: shein Status: ready --> <!-- Reviewed: no --> <!-- $Revision$ --> <refentry xml:id="function.iconv-mime-decode-headers" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> @@ -107,6 +107,7 @@ <function>iconv_mime_decode_headers</function> автоматически помещает их в подмассив с числовыми индексами в порядке их обработки. + Обратите внимание, что имена заголовков не <emphasis>нечувствительны к регистру</emphasis>. </para> </refsect1> diff --git a/reference/misc/functions/usleep.xml b/reference/misc/functions/usleep.xml index 30920099c..5a88c9bd9 100644 --- a/reference/misc/functions/usleep.xml +++ b/reference/misc/functions/usleep.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- EN-Revision: 0c9c2dd669fe9395eaa73d487fbd160f9057429a Maintainer: aur Status: ready --> +<!-- EN-Revision: 95bc76b545a00d436239af6d5516f75ff890df56 Maintainer: aur Status: ready --> <!-- Reviewed: yes Maintainer: lex --> <!-- $Revision$ --> <refentry xml:id="function.usleep" xmlns="http://docbook.org/ns/docbook"> @@ -32,6 +32,13 @@ </para> <note> <simpara> + Значения больше <literal>1000000</literal> (т.е. ожидание более секунды) + могут не поддерживаться операционной системой. + Вместо этого используйте <function>sleep</function>. + </simpara> + </note> + <note> + <simpara> В Windows система может откладывать исполнение дольше указанного количества микросекунд, в зависимости от аппаратного обеспечения. </simpara> diff --git a/reference/opcache/ini.xml b/reference/opcache/ini.xml index 203cefcd6..7c81d76df 100644 --- a/reference/opcache/ini.xml +++ b/reference/opcache/ini.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- $Revision$ --> -<!-- EN-Revision: a5a946a88e643b79d2c4c867d0213521be98df35 Maintainer: rjhdby Status: ready --> +<!-- EN-Revision: 7c6c83d08e97007ca75f739873f8125c6c0640cf Maintainer: rjhdby Status: ready --> <!-- Reviewed: yes Maintainer: lex --> <sect1 xml:id="opcache.configuration" xmlns="http://docbook.org/ns/docbook"> @@ -929,6 +929,13 @@ под одной и той же учётной записью пользователя с одинаковым идентификатором кеша, совместно используют один экземпляр OPcache. Значение идентификатора кеша может быть свободно выбрано. </para> + <tip> + <simpara> + Для IIS разные пулы приложений могут иметь собственный экземпляр OPcache, + используя переменную среды <envar>APP_POOL_ID</envar> как + <parameter>opcache.cache_id</parameter>. + </simpara> + </tip> </listitem> </varlistentry> <varlistentry xml:id="ini.opcache.jit"> diff --git a/reference/outcontrol/functions/ob-implicit-flush.xml b/reference/outcontrol/functions/ob-implicit-flush.xml index 841cfc2bd..1a123f1b1 100644 --- a/reference/outcontrol/functions/ob-implicit-flush.xml +++ b/reference/outcontrol/functions/ob-implicit-flush.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- EN-Revision: 596b022270dea3739577b553fef56675e573f0b2 Maintainer: mch Status: ready --> +<!-- EN-Revision: 537b504c17430646ecb25783ce564a0af4553fb3 Maintainer: mch Status: ready --> <!-- $Revision$ --> <!-- Reviewed: yes Maintainer: lex --> <refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.ob-implicit-flush"> @@ -12,7 +12,7 @@ &reftitle.description; <methodsynopsis> <type>void</type><methodname>ob_implicit_flush</methodname> - <methodparam choice="opt"><type>int</type><parameter>flag</parameter><initializer>1</initializer></methodparam> + <methodparam choice="opt"><type>bool</type><parameter>flag</parameter><initializer>true</initializer></methodparam> </methodsynopsis> <para> <function>ob_implicit_flush</function> включает или выключает неявный @@ -30,7 +30,7 @@ <term><parameter>flag</parameter></term> <listitem> <para> - <literal>1</literal> для включения неявного сброса, <literal>0</literal> в противном случае. + <literal>1</literal> для включения неявного сброса, <literal>false</literal> в противном случае. </para> </listitem> </varlistentry> @@ -45,6 +45,29 @@ </para> </refsect1> + <refsect1 role="changelog"> + &reftitle.changelog; + <informaltable> + <tgroup cols="2"> + <thead> + <row> + <entry>&Version;</entry> + <entry>&Description;</entry> + </row> + </thead> + <tbody> + <row> + <entry>8.0.0</entry> + <entry> + <parameter>flag</parameter> теперь принимает логическое значение (<type>bool</type>); + ранее принималось целое число (<type>int</type>). + </entry> + </row> + </tbody> + </tgroup> + </informaltable> + </refsect1> + <refsect1 role="seealso"> &reftitle.seealso; <para>