<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/migration73.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ru',
  ),
  'this' => 
  array (
    0 => 'migration73.other-changes.php',
    1 => 'Другие изменения',
    2 => 'Другие изменения',
  ),
  'up' => 
  array (
    0 => 'migration73.php',
    1 => 'Миграция с PHP 7.2.x на PHP 7.3.x',
  ),
  'prev' => 
  array (
    0 => 'migration73.deprecated.php',
    1 => 'Функционал, объявленный устаревшим в PHP 7.3.x',
  ),
  'next' => 
  array (
    0 => 'migration73.windows-support.php',
    1 => 'Поддержка Windows',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ru',
    'path' => 'appendices/migration73/other-changes.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="migration73.other-changes" class="sect1">
 <h2 class="title">Другие изменения</h2>

 <div class="sect2" id="migration73.other-changes.core">
  <h3 class="title">Ядро PHP</h3>

  <div class="sect3" id="migration73.other-changes.core.setcookie">
   <h4 class="title">Функция set(raw)cookie принимает аргумент $option</h4>

   <p class="para">
    Функции <span class="function"><a href="function.setcookie.php" class="function">setcookie()</a></span> и <span class="function"><a href="function.setrawcookie.php" class="function">setrawcookie()</a></span> теперь также
    поддерживают следующее объявление (сигнатуру):
    <div class="methodsynopsis dc-description">
     <span class="methodname"><a href="function.setcookie.php" class="methodname">setcookie</a></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$name</code></span>, <span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$value</code><span class="initializer"> = &quot;&quot;</span></span>, <span class="methodparam"><span class="type"><a href="language.types.array.php" class="type array">array</a></span> <code class="parameter">$options</code><span class="initializer"> = []</span></span>): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>


    где <code class="literal">$options</code> - ассоциативный массив, который может иметь любой из ключей
    <code class="literal">&quot;expires&quot;</code>, <code class="literal">&quot;path&quot;</code>,
    <code class="literal">&quot;domain&quot;</code>, <code class="literal">&quot;secure&quot;</code>,
    <code class="literal">&quot;httponly&quot;</code> и <code class="literal">&quot;samesite&quot;</code>.
   </p>
  </div>

  <div class="sect3" id="migration73.other-changes.core.syslog">
   <h4 class="title">Новые ini-директивы syslog</h4>

   <p class="para">
    Следующие ini-директивы добавлены для настройки логирования, если для опции
    <a href="errorfunc.configuration.php#ini.error-log" class="link">error_log</a> установлено значение
    <code class="literal">syslog</code>:
    <dl>
     
      <dt><a href="errorfunc.configuration.php#ini.syslog.facility" class="link">syslog.facility</a></dt>
      <dd>
       <span class="simpara">
        Указывает тип программы, регистрирующей сообщение.
       </span>
      </dd>
     
     
      <dt><a href="errorfunc.configuration.php#ini.syslog.filter" class="link">syslog.filter</a></dt>
      <dd>
       <span class="simpara">
        Задаёт тип фильтра для фильтрации сообщений с поддерживаемыми типами фильтров -
        <code class="literal">all</code>, <code class="literal">no-ctrl</code> и <code class="literal">ascii</code>.
        Начиная с PHP 7.3.8, также доступен тип <code class="literal">raw</code>,
        восстанавливающий поведение системного журнала в предыдущих версиях PHP.
        Этот фильтр также повлияет на вызовы <span class="function"><a href="function.syslog.php" class="function">syslog()</a></span>.
       </span>
      </dd>
     
     
      <dt><a href="errorfunc.configuration.php#ini.syslog.ident" class="link">syslog.ident</a></dt>
      <dd>
       <span class="simpara">
        Задаёт строку ident, добавляемую перед каждым сообщением.
       </span>
      </dd>
     
    </dl>
   </p>
  </div>

  <div class="sect3" id="migration73.other-changes.core.gc">
   <h4 class="title">Сборщик мусора</h4>

   <p class="para">
    Улучшен
    <a href="features.gc.collecting-cycles.php" class="link">сбор циклических ссылок</a>,
    что может привести к значительным улучшениям производительности.
   </p>
  </div>


  <div class="sect3" id="migration73.other-changes.core.misc">
   <h4 class="title">Разное</h4>

   <p class="para">
    Функция <span class="function"><a href="function.var-export.php" class="function">var_export()</a></span> теперь экспортирует объекты <span class="classname"><a href="class.stdclass.php" class="classname">stdClass</a></span>
    в качестве массива, приведённых к объекту (<code class="code">(object) array( ... )</code>), вместо
    использования несуществующего метода <span class="methodname"><strong>stdClass::__setState()</strong></span>.
   </p>

   <p class="para">
    Функция <span class="function"><a href="function.debug-zval-dump.php" class="function">debug_zval_dump()</a></span> изменена для отображения рекурсивных массивов
    и объектов так же, как и <span class="function"><a href="function.var-dump.php" class="function">var_dump()</a></span>. Теперь она не отображает их дважды.
   </p>

   <p class="para">
    Функции <span class="function"><a href="function.array-push.php" class="function">array_push()</a></span> и <span class="function"><a href="function.array-unshift.php" class="function">array_unshift()</a></span> теперь
    также могут быть вызваны с одним аргументом, что особенно удобно в сочетании с оператором распространения.
   </p>
  </div>

 </div>

 <div class="sect2" id="migration73.other-changes.phpdbg">
  <h3 class="title">Интерактивный отладчик PHP</h3>

  <p class="para">
   Удалены неиспользуемые константы <strong><code><a href="phpdbg.constants.php#constant.phpdbg-file">PHPDBG_FILE</a></code></strong>,
   <strong><code><a href="phpdbg.constants.php#constant.phpdbg-method">PHPDBG_METHOD</a></code></strong>, <strong><code><a href="phpdbg.constants.php#constant.phpdbg-lineno">PHPDBG_LINENO</a></code></strong> и
   <strong><code><a href="phpdbg.constants.php#constant.phpdbg-func">PHPDBG_FUNC</a></code></strong>.
  </p>
 </div>

 <div class="sect2" id="migration73.other-changes.fpm">
  <h3 class="title">Менеджер процессов FastCGI</h3>

  <p class="para">
   Теперь также доступна функция <span class="function"><a href="function.getallheaders.php" class="function">getallheaders()</a></span>.
  </p>
 </div>

 <div class="sect2" id="migration73.other-changes.curl">
  <h3 class="title">Библиотека Client URL (cURL)</h3>

  <p class="para">
   Теперь требуется библиотека libcurl версии ≥ 7.15.5.
  </p>
 </div>

 <div class="sect2" id="migration73.other-changes.filter">
  <h3 class="title">Фильтрация данных</h3>

  <p class="para">
   <strong><code><a href="filter.constants.php#constant.filter-validate-float">FILTER_VALIDATE_FLOAT</a></code></strong> теперь также поддерживает параметр <code class="literal">thousand</code>,
   который определяет набор разрешённых символов-разделителей для тысяч.
   Значение по умолчанию (<code class="code">&quot;&#039;,.&quot;</code>) полностью обратно совместимо с предыдущими версиями PHP.
  </p>

  <p class="para">
   <strong><code><a href="filter.constants.php#constant.filter-sanitize-add-slashes">FILTER_SANITIZE_ADD_SLASHES</a></code></strong> был добавлен в качестве псевдонима фильтра
   <code class="literal">magic_quotes</code> (<strong><code><a href="filter.constants.php#constant.filter-sanitize-magic-quotes">FILTER_SANITIZE_MAGIC_QUOTES</a></code></strong>).
   Фильтр <code class="literal">magic_quotes</code> подлежит удалению в будущих версиях PHP.
  </p>
 </div>

 <div class="sect2" id="migration73.other-changes.ftp">
  <h3 class="title">FTP</h3>

  <p class="para">
   Режим по умолчанию изменён на <code class="literal">binary</code>.
  </p>
 </div>

 <div class="sect2" id="migration73.other-changes.intl">
  <h3 class="title">Функции интернационализации</h3>

  <p class="para">
   Константа <strong><code>Normalizer::NONE</code></strong> объявлена устаревшей, когда PHP скомпилирован
   с ICU версии ≥ 56.
  </p>

  <p class="para">
   Введена константа <strong><code><a href="class.normalizer.php#normalizer.constants.form-kc-cf">Normalizer::FORM_KC_CF</a></code></strong> в качестве аргумента <span class="methodname"><a href="normalizer.normalize.php" class="methodname">Normalizer::normalize()</a></span>
   для нормализации <code class="literal">NFKC_Casefold</code>; доступна, когда есть ICU ≥ 56.
  </p>
 </div>

 <div class="sect2" id="migration73.other-changes.json">
  <h3 class="title">Объектная нотация JavaScript (JSON)</h3>

  <p class="para">
   Добавлен новый флаг <strong><code><a href="json.constants.php#constant.json-throw-on-error">JSON_THROW_ON_ERROR</a></code></strong>, который можно использовать с
   <span class="function"><a href="function.json-decode.php" class="function">json_decode()</a></span> или <span class="function"><a href="function.json-encode.php" class="function">json_encode()</a></span> и заставляет эти функции
   выбрасывать новое исключение <span class="classname"><a href="class.jsonexception.php" class="classname">JsonException</a></span>  в случае возникновения ошибки, вместо того,
   чтобы устанавливать глобальное состояние ошибки, которое извлекается с помощью <span class="function"><a href="function.json-last-error.php" class="function">json_last_error()</a></span> и <span class="function"><a href="function.json-last-error-msg.php" class="function">json_last_error_msg()</a></span>.
   <strong><code><a href="json.constants.php#constant.json-partial-output-on-error">JSON_PARTIAL_OUTPUT_ON_ERROR</a></code></strong> имеет приоритет над <strong><code><a href="json.constants.php#constant.json-throw-on-error">JSON_THROW_ON_ERROR</a></code></strong>.
  </p>
 </div>

 <div class="sect2" id="migration73.other-changes.mbstring">
  <h3 class="title">Мультибайтовые строки</h3>

  <p class="para">
   Конфигурационная опция <strong class="option configure">--with-libmbfl</strong> больше недоступна.
  </p>
 </div>

 <div class="sect2" id="migration73.other-changes.uodbc">
  <h3 class="title">ODBC (Unified)</h3>

  <p class="para">
   Поддержка <code class="literal">ODBCRouter</code> и <code class="literal">Birdstep</code>,
   включая ini-директиву <code class="literal">birdstep.max_links</code> была удалена.
  </p>
 </div>

 <div class="sect2" id="migration73.other-changes.opcache">
  <h3 class="title">OPcache</h3>

  <p class="para">
   Удалена ini-директива <code class="literal">opcache.inherited_hack</code>. Это значение уже игнорировалось с PHP 5.3.0.
  </p>
 </div>

 <div class="sect2" id="migration73.other-changes.openssl">
  <h3 class="title">OpenSSL</h3>

  <p class="para">
   Добавлены опции потока ssl <code class="literal">min_proto_version</code> и <code class="literal">max_proto_version</code>,
   а также соответствующие с ними константы для возможных значений протокола TLS.
  </p>
 </div>

 <div class="sect2" id="migration73.other-changes.pcre">
  <h3 class="title">Регулярные выражения (совместимые с Perl)</h3>

  <p class="para">
   <a href="book.pcre.php" class="link">Модуль PCRE</a> был обновлён до PCRE2, что может привести к незначительным изменениям в поведении
   (например, диапазоны символов в классах теперь интерпретируются более строго) и дополняет существующий синтаксис регулярных выражений.
  </p>

  <p class="para">
   Функция <span class="function"><a href="function.preg-quote.php" class="function">preg_quote()</a></span> теперь также экранирует символ <code class="literal">&#039;#&#039;</code>.
  </p>
 </div>

 <div class="sect2" id="migration73.other-changes.pdo-dblib">
  <h3 class="title">Microsoft SQL Server и функции Sybase (PDO_DBLIB)</h3>

  <p class="para">
   Добавлен атрибут <strong><code>PDO::DBLIB_ATTR_SKIP_EMPTY_ROWSETS</code></strong>
   для автоматического пропуска пустых наборов строк.
  </p>

  <p class="para">
   Добавлен атрибут <strong><code>PDO::DBLIB_ATTR_TDS_VERSION</code></strong>
   который представляет версию TDS.
  </p>

  <p class="para">
    Столбцы DATETIME2 теперь обрабатываются как столбцы DATETIME.
  </p>
 </div>

 <div class="sect2" id="migration73.other-changes.pdo-sqlite">
  <h3 class="title">Функции SQLite (PDO_SQLITE)</h3>

  <p class="para">
   Базы данных SQLite3 теперь можно открыть в режиме только для чтения,
   установив новый атрибут <strong><code>PDO::SQLITE_ATTR_OPEN_FLAGS</code></strong>
   на значение <strong><code>PDO::SQLITE_OPEN_READONLY</code></strong>.
  </p>
 </div>

 <div class="sect2" id="migration73.other-changes.session">
  <h3 class="title">Обработка сессий</h3>

  <p class="para">
   Функция <span class="function"><a href="function.session-set-cookie-params.php" class="function">session_set_cookie_params()</a></span> теперь также поддерживает
   следующее объявление (сигнатуру):
   <div class="methodsynopsis dc-description">
    <span class="methodname"><a href="function.session-set-cookie-params.php" class="methodname">session_set_cookie_params</a></span>(<span class="methodparam"><span class="type"><a href="language.types.array.php" class="type array">array</a></span> <code class="parameter">$options</code></span>): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>


   где <code class="literal">$options</code> - ассоциативный массив, который может иметь любой из ключей
   <code class="literal">&quot;lifetime&quot;</code>, <code class="literal">&quot;path&quot;</code>,
   <code class="literal">&quot;domain&quot;</code>, <code class="literal">&quot;secure&quot;</code>,
   <code class="literal">&quot;httponly&quot;</code> и <code class="literal">&quot;samesite&quot;</code>.
   Соответственно, возвращаемое значение <span class="function"><a href="function.session-get-cookie-params.php" class="function">session_get_cookie_params()</a></span>
   теперь также имеет элемент с ключом  <code class="literal">&quot;samesite&quot;</code>.
   Кроме того, новая ini-опция <code class="literal">session.cookie_samesite</code> для установки по умолчанию директивы SameSite для cookies.
   По умолчанию используется значение <code class="literal">&quot;&quot;</code> (пустая строка),
   поэтому директива SameSite не задана.
   Может быть установлена на значение <code class="literal">&quot;Lax&quot;</code> или <code class="literal">&quot;Strict&quot;</code>,
   которое устанавливает соответствующее значение директиве SameSite.
  </p>
 </div>

 <div class="sect2" id="migration73.other-changes.tidy">
  <h3 class="title">Tidy</h3>

  <p class="para">
   Сборка вместе <a href="https://github.com/petdance/tidyp" class="link external">&raquo;&nbsp;tidyp</a> теперь также поддерживается прозрачно.
   Поскольку tidyp не предлагает API для получения даты релиза,
   <span class="function"><a href="tidy.getrelease.php" class="function">tidy_get_release()</a></span> и <span class="methodname"><a href="tidy.getrelease.php" class="methodname">tidy::getRelease()</a></span> возвращает значение <code class="literal">&#039;unknown&#039;</code> в этом случае.
  </p>
 </div>

 <div class="sect2" id="migration73.other-changes.xml">
  <h3 class="title">XML-парсер</h3>

  <p class="para">
   Возвращаемое значение callback-функции <span class="function"><a href="function.xml-set-external-entity-ref-handler.php" class="function">xml_set_external_entity_ref_handler()</a></span> больше не игнорируется,
   если модуль был собран с библиотекой libxml. Ранее возвращаемое значение игнорировалось, а парсинг никогда не прекращался.
  </p>
 </div>

 <div class="sect2" id="migration73.other-changes.zip">
  <h3 class="title">Zip</h3>

  <p class="para">
   Сборка с использованием libzip, входящего в PHP, не рекомендуется,
   но всё же возможна путём добавления <strong class="option configure">--without-libzip</strong> в конфигурацию.
  </p>
 </div>

  <div class="sect2" id="migration73.other-changes.zlib">
  <h3 class="title">Сжатие Zlib</h3>

  <p class="para">
   Добавлен параметр контекста zlib/level для <a href="wrappers.compression.php" class="link">обёртки compress.zlib</a>,
   чтобы облегчить установку желаемого уровня сжатия.
  </p>
 </div>

</div><?php manual_footer($setup); ?>