mirror of
https://github.com/php/doc-ru.git
synced 2025-08-16 18:22:04 +00:00
Update incompatible.xml
This commit is contained in:
@ -2,10 +2,10 @@
|
||||
<!-- EN-Revision: 6d29533483657c036e49edb5ea88c7103d126681 Maintainer: lex Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
<sect1 xml:id="migration72.incompatible">
|
||||
<title>Изменения, ломающие обратную совместимость</title>
|
||||
<title>Изменения, которые ломают обратную совместимость</title>
|
||||
|
||||
<sect2 xml:id="migration72.incompatible.number_format-no-neg-zero">
|
||||
<title>Предотвращение возврата отрицательного нуля из <function>number_format</function></title>
|
||||
<title>Предотвращение возврата отрицательного нуля из функции <function>number_format</function></title>
|
||||
|
||||
<para>
|
||||
Раньше функция <function>number_format</function> возвращала <literal>-0</literal>.
|
||||
@ -18,7 +18,9 @@
|
||||
<![CDATA[
|
||||
<?php
|
||||
|
||||
var_dump(number_format(-0.01)); // теперь выводит string(1) "0" вместо string(2) "-0"
|
||||
var_dump(number_format(-0.01)); // Теперь выводит string(1) "0" вместо string(2) "-0"
|
||||
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</informalexample>
|
||||
@ -29,12 +31,12 @@ var_dump(number_format(-0.01)); // теперь выводит string(1) "0" в
|
||||
|
||||
<para>
|
||||
Теперь числовые ключи лучше обрабатываются при приведении массивов к объектам и
|
||||
объектов к массивам (через явное приведение, либо используя <function>settype</function>).
|
||||
объектов к массивам (через явное приведение, либо через функцию <function>settype</function>).
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Это означает, что числовые (или числа в виде строк) ключи из массивов, конвертированные
|
||||
в объекты теперь будут доступны:
|
||||
То есть целочисленные (или строковые целочисленные) ключи из массивов, которые приводятся
|
||||
к объектам, теперь будут доступны:
|
||||
</para>
|
||||
|
||||
<informalexample>
|
||||
@ -42,7 +44,7 @@ var_dump(number_format(-0.01)); // теперь выводит string(1) "0" в
|
||||
<![CDATA[
|
||||
<?php
|
||||
|
||||
// приведение массива к объекту
|
||||
// Приведение массива к объекту
|
||||
$arr = [0 => 1];
|
||||
$obj = (object)$arr;
|
||||
var_dump(
|
||||
@ -50,6 +52,8 @@ var_dump(
|
||||
$obj->{'0'}, // теперь работает
|
||||
$obj->{0} // теперь работает
|
||||
);
|
||||
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
&example.outputs;
|
||||
@ -66,7 +70,7 @@ int(1)
|
||||
</informalexample>
|
||||
|
||||
<para>
|
||||
И теперь числовые (или числа в виде строк) ключи объектов доступны при конвертации в массивы:
|
||||
И теперь целочисленные (или строковые целочисленные) ключи объектов доступны при конвертации в массивы:
|
||||
</para>
|
||||
|
||||
<informalexample>
|
||||
@ -81,19 +85,23 @@ $obj = new class {
|
||||
$this->{0} = 1;
|
||||
}
|
||||
};
|
||||
|
||||
$arr = (array)$obj;
|
||||
|
||||
var_dump(
|
||||
$arr,
|
||||
$arr[0], // теперь работает
|
||||
$arr['0'] // теперь работает
|
||||
);
|
||||
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
&example.outputs;
|
||||
<screen>
|
||||
<![CDATA[
|
||||
array(1) {
|
||||
[0]=> // теперь это числовой ключ, а не строковый
|
||||
[0]=> // Теперь это целочисленный ключ, а не строковый
|
||||
int(1)
|
||||
}
|
||||
int(1)
|
||||
@ -104,13 +112,13 @@ int(1)
|
||||
</sect2>
|
||||
|
||||
<sect2 xml:id="migration72.incompatible.no-null-to-get_class">
|
||||
<title>Запрещена передача &null; в <function>get_class</function></title>
|
||||
<title>Запрещена передача константы &null; в функцию <function>get_class</function></title>
|
||||
|
||||
<para>
|
||||
Раньше передача &null; в функцию <function>get_class</function> возвращала
|
||||
имя класса, из которого был сделан вызов. Это поведение было удалено и теперь вместо
|
||||
этого будет вызвана ошибка уровня <constant>E_WARNING</constant>. Для
|
||||
достижения того же поведения, что и раньше, следует просто опустить аргумент.
|
||||
имя класса, из которого сделали вызов. Это поведение удалили, и теперь вместо
|
||||
этого выдаётся ошибка уровня <constant>E_WARNING</constant>. Чтобы получить
|
||||
предыдущее поведение, следует просто опустить аргумент.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
@ -118,9 +126,9 @@ int(1)
|
||||
<title>Предупреждение при подсчёте неисчисляемых типов</title>
|
||||
|
||||
<para>
|
||||
Теперь при использовании <function>count</function> с параметром,
|
||||
который нельзя посчитать будет возникать ошибка уровня <constant>E_WARNING</constant>
|
||||
(это также касается <function>sizeof</function> как псевдонима этой функции).
|
||||
Теперь при вызове функции <function>count</function> с параметром,
|
||||
который нельзя посчитать, будет возникать ошибка уровня <constant>E_WARNING</constant>
|
||||
(это также касается функции <function>sizeof</function> как псевдонима этой функции).
|
||||
</para>
|
||||
|
||||
<informalexample>
|
||||
@ -130,11 +138,13 @@ int(1)
|
||||
|
||||
var_dump(
|
||||
count(null), // NULL нельзя подсчитать
|
||||
count(1), // числа нельзя подсчитать
|
||||
count('abc'), // строки нельзя подсчитать
|
||||
count(new stdClass), // объекты, не реализующие интерфейс Countable, нельзя подсчитать
|
||||
count([1,2]) // массивы можно подсчитать
|
||||
count(1), // Числа нельзя подсчитать
|
||||
count('abc'), // Строки нельзя подсчитать
|
||||
count(new stdClass), // Объекты, которые не реализуют интерфейс Countable, нельзя подсчитать
|
||||
count([1,2]) // Массивы можно подсчитать
|
||||
);
|
||||
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
&example.outputs;
|
||||
@ -162,10 +172,10 @@ int(2)
|
||||
|
||||
<para>
|
||||
В рамках долгосрочной миграции отказа от ресурсов, модуль
|
||||
<link linkend="book.hash">Hash</link> был обновлён
|
||||
<link linkend="book.hash">Hash</link> обновили
|
||||
для использования объектов вместо ресурсов. Это изменение должно быть плавным
|
||||
для PHP-разработчиков, за исключением случаев, когда используются проверки <function>is_resource</function>
|
||||
(которые нужно заменить на использование <function>is_object</function>).
|
||||
для PHP-разработчиков, за исключением проверок через функцию <function>is_resource</function>,
|
||||
которые нужно заменить на функцию <function>is_object</function>.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
@ -173,7 +183,7 @@ int(2)
|
||||
<title>Улучшены значения по умолчанию в SSL/TLS</title>
|
||||
|
||||
<para>
|
||||
Были сделаны следующие изменения в значения по умолчанию:
|
||||
В значения по умолчанию внесли следующие изменения:
|
||||
</para>
|
||||
|
||||
<itemizedlist>
|
||||
@ -197,10 +207,11 @@ int(2)
|
||||
</sect2>
|
||||
|
||||
<sect2 xml:id="migration72.incompatible.gettype-on-closed-resource">
|
||||
<title>Возвращаемое значение <function>gettype</function> для закрытых ресурсов</title>
|
||||
<title>Значение, которое возвращает функция <function>gettype</function> для закрытых ресурсов</title>
|
||||
|
||||
<para>
|
||||
Раньше использование <function>gettype</function> на закрытом ресурсе возвращало строку <literal>"unknown type"</literal>. Теперь будет возвращена строка
|
||||
Раньше вызов функции <function>gettype</function> на закрытом ресурсе
|
||||
возвращал строку <literal>"unknown type"</literal>. Теперь функция будет возвращать строку
|
||||
<literal>"resource (closed)"</literal>.
|
||||
</para>
|
||||
</sect2>
|
||||
@ -209,8 +220,8 @@ int(2)
|
||||
<title><function>is_object</function> и <classname>__PHP_Incomplete_Class</classname></title>
|
||||
|
||||
<para>
|
||||
Раньше использование <function>is_object</function> на классе
|
||||
<classname>__PHP_Incomplete_Class</classname> возвращало &false;.
|
||||
Раньше вызов функции <function>is_object</function> на классе
|
||||
<classname>__PHP_Incomplete_Class</classname> возвращал &false;.
|
||||
Теперь будет возвращаться &true;.
|
||||
</para>
|
||||
</sect2>
|
||||
@ -229,7 +240,7 @@ int(2)
|
||||
<title>Поддержка Windows</title>
|
||||
|
||||
<para>
|
||||
Официально поддерживаемые минимальные версии Windows теперь являются Windows 7/Server
|
||||
Официально поддерживаемые минимальные версии Windows теперь — Windows 7 и Server
|
||||
2008 R2.
|
||||
</para>
|
||||
</sect2>
|
||||
@ -246,9 +257,9 @@ int(2)
|
||||
<title><literal>object</literal> для имён классов</title>
|
||||
|
||||
<para>
|
||||
Имя <literal>object</literal> ранее было мягко зарезервировано с PHP 7.0.
|
||||
Имя <literal>object</literal> раньше было мягко зарезервировано с PHP 7.0.
|
||||
Теперь оно полноценное зарезервированное слово,
|
||||
запрещающее использовать его в качестве имени класса, трейта или интерфейса.
|
||||
которое запрещает использовать его как имя класса, трейта или интерфейса.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
@ -256,31 +267,32 @@ int(2)
|
||||
<title>Поддержка NetWare</title>
|
||||
|
||||
<para>
|
||||
Поддержка NetWare была удалена.
|
||||
Удалили поддержку NetWare.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<sect2 xml:id="migration72.incompatible.array-unique">
|
||||
<title><function>array_unique</function> with <constant>SORT_STRING</constant></title>
|
||||
<title>
|
||||
Пример работы функции <function>array_unique</function> с константой <constant>SORT_STRING</constant>
|
||||
</title>
|
||||
|
||||
<para>
|
||||
Если <parameter>sort_flags</parameter> равен
|
||||
<constant>SORT_STRING</constant>, ранее массив
|
||||
<parameter>array</parameter> копировался, а не уникальные элементы
|
||||
удалялись (сохраняя значения цифровых индексов),
|
||||
но теперь создаётся новый массив путём добавления уникальных элементов.
|
||||
Это может привести к различным числовым индексам.
|
||||
Хотя функция <function>array_unique</function> с флагом <constant>SORT_STRING</constant>
|
||||
раньше копировала массив и удаляла неуникальные элементы (без последующей упаковки массива),
|
||||
теперь новый массив создаётся путём добавления
|
||||
уникальных элементов. Это может привести к получению разных числовых индексов.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<sect2 xml:id="migration72.incompatible.bcmod-and-floats">
|
||||
<title>Изменения <function>bcmod</function> с числами с плавающей точкой</title>
|
||||
<title>Изменения в работе функции <function>bcmod</function> с числами с плавающей точкой</title>
|
||||
|
||||
<para>
|
||||
Функция <function>bcmod</function> больше не обрезает числа с плавающей точкой до целых. Таким образом, её поведение теперь соответствует
|
||||
Функция <function>bcmod</function> больше не обрезает числа с плавающей точкой до целых.
|
||||
Таким образом, её поведение теперь соответствует функции
|
||||
<function>fmod</function>, а не оператору <literal>%</literal>.
|
||||
Например, <literal>bcmod('4', '3.5')</literal> теперь возвращает
|
||||
<literal>0.5</literal> вместо <literal>1</literal>.
|
||||
значение <literal>0.5</literal>, а не <literal>1</literal>.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
@ -290,7 +302,7 @@ int(2)
|
||||
<para>
|
||||
Функции <function>hash_hmac</function>, <function>hash_hmac_file</function>,
|
||||
<function>hash_pbkdf2</function> и <function>hash_init</function> (с
|
||||
<constant>HASH_HMAC</constant>) больше не принимают некриптографические хеши.
|
||||
флагом <constant>HASH_HMAC</constant>) больше не принимают некриптографические хеши.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
@ -298,18 +310,18 @@ int(2)
|
||||
<title>Опции функции <function>json_decode</function></title>
|
||||
|
||||
<para>
|
||||
Опция функции <function>json_decode</function>,
|
||||
<constant>JSON_OBJECT_AS_ARRAY</constant>, теперь используется, если второй параметр (assoc) равен &null;. Ранее
|
||||
<constant>JSON_OBJECT_AS_ARRAY</constant> всегда игнорировался.
|
||||
Теперь используется опция <constant>JSON_OBJECT_AS_ARRAY</constant> функции <function>json_decode</function>,
|
||||
если второй параметр (assoc) равен &null;. Раньше
|
||||
флаг <constant>JSON_OBJECT_AS_ARRAY</constant> всегда игнорировался.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<sect2 xml:id="migration72.incompatible.rand-mt_rand-output">
|
||||
<title>Вывод <function>rand</function> и <function>mt_rand</function></title>
|
||||
<title>Вывод функций <function>rand</function> и <function>mt_rand</function></title>
|
||||
|
||||
<para>
|
||||
Числа, генерируемые <function>rand</function> и
|
||||
<function>mt_rand</function> для определённого параметра переинициализации (seed), могут отличаться от PHP 7.1 на
|
||||
Числа, которые генерируют функции <function>rand</function>
|
||||
и <function>mt_rand</function> для определённого параметра переинициализации (seed), могут отличаться от PHP 7.1 на
|
||||
64-битных машинах (из-за исправления ошибки модульного смещения в реализации).
|
||||
</para>
|
||||
</sect2>
|
||||
@ -318,19 +330,19 @@ int(2)
|
||||
<title>Удаление ini-настройки <link linkend="ini.sql.safe-mode"><parameter>sql.safe_mode</parameter></link></title>
|
||||
|
||||
<para>
|
||||
Настройка конфигурации <parameter>sql.safe_mode</parameter> была удалена.
|
||||
Настройку конфигурации <parameter>sql.safe_mode</parameter> удалили.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<sect2 xml:id="migration72.incompatible.date_parse_from_format">
|
||||
<title>Изменения в <function>date_parse</function> и <function>date_parse_from_format</function></title>
|
||||
<title>Изменения в функциях <function>date_parse</function> и <function>date_parse_from_format</function></title>
|
||||
|
||||
<para>
|
||||
Элемент массива <literal>zone</literal>, возвращаемого функциями
|
||||
<function>date_parse_from_format</function> и
|
||||
<function>date_parse</function> теперь отображает секунды вместо
|
||||
минут, а его знак инвертируется. Например, <literal>-120</literal>
|
||||
теперь будет <literal>7200</literal>.
|
||||
Элемент массива <literal>zone</literal>, который возвращают функции
|
||||
<function>date_parse_from_format</function>
|
||||
и <function>date_parse</function>, теперь отображает секунды вместо
|
||||
минут, а его знак инвертируется. Например, значение <literal>-120</literal>
|
||||
теперь будет значением <literal>7200</literal>.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
|
Reference in New Issue
Block a user