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

contributors($setup);

?>
<div id="migration56.new-features" class="sect1">
 <h2 class="title">Новые возможности</h2>

 <div class="sect2" id="migration56.new-features.const-scalar-exprs">
  <h3 class="title">Константные выражения</h3>

  <p class="para">
   Теперь можно предоставить скалярное выражение,
   которое включает числовые и строковые литералы и (или) константы,
   когда раньше ожидалось статическое значение, например,
   в объявлениях констант или значениях аргументов функций по умолчанию.
  </p>

  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">const </span><span style="color: #0000BB">ONE </span><span style="color: #007700">= </span><span style="color: #0000BB">1</span><span style="color: #007700">;<br />const </span><span style="color: #0000BB">TWO </span><span style="color: #007700">= </span><span style="color: #0000BB">ONE </span><span style="color: #007700">* </span><span style="color: #0000BB">2</span><span style="color: #007700">;<br /><br />class </span><span style="color: #0000BB">C<br /></span><span style="color: #007700">{<br />    const </span><span style="color: #0000BB">THREE </span><span style="color: #007700">= </span><span style="color: #0000BB">TWO </span><span style="color: #007700">+ </span><span style="color: #0000BB">1</span><span style="color: #007700">;<br />    const </span><span style="color: #0000BB">ONE_THIRD </span><span style="color: #007700">= </span><span style="color: #0000BB">ONE </span><span style="color: #007700">/ </span><span style="color: #0000BB">self</span><span style="color: #007700">::</span><span style="color: #0000BB">THREE</span><span style="color: #007700">;<br />    const </span><span style="color: #0000BB">SENTENCE </span><span style="color: #007700">= </span><span style="color: #DD0000">'Значение константы THREE - '</span><span style="color: #007700">.</span><span style="color: #0000BB">self</span><span style="color: #007700">::</span><span style="color: #0000BB">THREE</span><span style="color: #007700">;<br /><br />    public function </span><span style="color: #0000BB">f</span><span style="color: #007700">(</span><span style="color: #0000BB">$a </span><span style="color: #007700">= </span><span style="color: #0000BB">ONE </span><span style="color: #007700">+ </span><span style="color: #0000BB">self</span><span style="color: #007700">::</span><span style="color: #0000BB">THREE</span><span style="color: #007700">)<br />    {<br />        return </span><span style="color: #0000BB">$a</span><span style="color: #007700">;<br />    }<br />}<br /><br />echo (new </span><span style="color: #0000BB">C</span><span style="color: #007700">)-&gt;</span><span style="color: #0000BB">f</span><span style="color: #007700">().</span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br />echo </span><span style="color: #0000BB">C</span><span style="color: #007700">::</span><span style="color: #0000BB">SENTENCE</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

   
<p class="para">
 Результат выполнения приведённого примера:
</p>

   <div class="example-contents screen">
<div class="cdata"><pre>
4
Значение константы THREE — 3
</pre></div>
   </div>
  </div>

  <p class="para">
   Массив (<span class="type"><a href="language.types.array.php" class="type array">array</a></span>) также определяют через ключевое слово
   <code class="literal">const</code>:
  </p>

  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">const </span><span style="color: #0000BB">ARR </span><span style="color: #007700">= [</span><span style="color: #DD0000">'a'</span><span style="color: #007700">, </span><span style="color: #DD0000">'b'</span><span style="color: #007700">];<br /><br />echo </span><span style="color: #0000BB">ARR</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">];<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

   
<p class="para">
 Результат выполнения приведённого примера:
</p>

   <div class="example-contents screen">
<div class="cdata"><pre>
a
</pre></div>
   </div>
  </div>
 </div>

 <div class="sect2" id="migration56.new-features.variadics">
  <h3 class="title">Функции с переменным количеством аргументов через оператор <code class="literal">...</code></h3>

  <p class="para">
   <a href="functions.arguments.php#functions.variable-arg-list" class="link">Функции с переменным количеством аргументов</a>
   теперь разрешается реализовывать через оператор <code class="literal">...</code>, вместо того
   чтобы полагаться на функцию <span class="function"><a href="function.func-get-args.php" class="function">func_get_args()</a></span>.
  </p>

  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">function </span><span style="color: #0000BB">f</span><span style="color: #007700">(</span><span style="color: #0000BB">$req</span><span style="color: #007700">, </span><span style="color: #0000BB">$opt </span><span style="color: #007700">= </span><span style="color: #0000BB">null</span><span style="color: #007700">, ...</span><span style="color: #0000BB">$params</span><span style="color: #007700">)<br />{<br />    </span><span style="color: #FF8000">// Переменная $params — массив, который содержит остальные аргументы<br />    </span><span style="color: #0000BB">printf</span><span style="color: #007700">(<br />        </span><span style="color: #DD0000">'$req: %d; $opt: %d; количество параметров: %d' </span><span style="color: #007700">. </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">,<br />        </span><span style="color: #0000BB">$req</span><span style="color: #007700">,<br />        </span><span style="color: #0000BB">$opt</span><span style="color: #007700">,<br />        </span><span style="color: #0000BB">count</span><span style="color: #007700">(</span><span style="color: #0000BB">$params</span><span style="color: #007700">)<br />    );<br />}<br /><br /></span><span style="color: #0000BB">f</span><span style="color: #007700">(</span><span style="color: #0000BB">1</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">f</span><span style="color: #007700">(</span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #0000BB">2</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">f</span><span style="color: #007700">(</span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #0000BB">2</span><span style="color: #007700">, </span><span style="color: #0000BB">3</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">f</span><span style="color: #007700">(</span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #0000BB">2</span><span style="color: #007700">, </span><span style="color: #0000BB">3</span><span style="color: #007700">, </span><span style="color: #0000BB">4</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">f</span><span style="color: #007700">(</span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #0000BB">2</span><span style="color: #007700">, </span><span style="color: #0000BB">3</span><span style="color: #007700">, </span><span style="color: #0000BB">4</span><span style="color: #007700">, </span><span style="color: #0000BB">5</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

   
<p class="para">
 Результат выполнения приведённого примера:
</p>

   <div class="example-contents screen">
<div class="cdata"><pre>
$req: 1; $opt: 0; количество параметров: 0
$req: 1; $opt: 2; количество параметров: 0
$req: 1; $opt: 2; количество параметров: 1
$req: 1; $opt: 2; количество параметров: 2
$req: 1; $opt: 2; количество параметров: 3
</pre></div>
   </div>
  </div>
 </div>

 <div class="sect2" id="migration56.new-features.splat">
  <h3 class="title">Распаковка аргументов через оператор <code class="literal">...</code></h3>

  <p class="para">
   <a href="language.types.array.php" class="link">Массивы</a> и объекты, которые реализуют
   интерфейс <span class="interfacename"><a href="class.traversable.php" class="interfacename">Traversable</a></span>, разрешается распаковывать
   в список аргументов при вызове функций и передаче аргументов через оператор <code class="literal">...</code>.
   В других языках, включая Ruby, оператор знают как splat- или spread-оператор.
  </p>

  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">function </span><span style="color: #0000BB">add</span><span style="color: #007700">(</span><span style="color: #0000BB">$a</span><span style="color: #007700">, </span><span style="color: #0000BB">$b</span><span style="color: #007700">, </span><span style="color: #0000BB">$c</span><span style="color: #007700">)<br />{<br />    return </span><span style="color: #0000BB">$a </span><span style="color: #007700">+ </span><span style="color: #0000BB">$b </span><span style="color: #007700">+ </span><span style="color: #0000BB">$c</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">$operators </span><span style="color: #007700">= [</span><span style="color: #0000BB">2</span><span style="color: #007700">, </span><span style="color: #0000BB">3</span><span style="color: #007700">];<br />echo </span><span style="color: #0000BB">add</span><span style="color: #007700">(</span><span style="color: #0000BB">1</span><span style="color: #007700">, ...</span><span style="color: #0000BB">$operators</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

   
<p class="para">
 Результат выполнения приведённого примера:
</p>

   <div class="example-contents screen">
<div class="cdata"><pre>
6
</pre></div>
   </div>
  </div>
 </div>

 <div class="sect2" id="migration56.new-features.exponentiation">
  <h3 class="title">Возведение в степень через оператор <code class="literal">**</code></h3>

  <p class="para">
   Добавили правоассоциативный оператор <code class="literal">**</code>
   возведения в степень, и короткий синтаксис <code class="literal">**=</code> присваивания.
  </p>

  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br />printf</span><span style="color: #007700">(</span><span style="color: #DD0000">"2 ** 3 ==      %d\n"</span><span style="color: #007700">, </span><span style="color: #0000BB">2 </span><span style="color: #007700">** </span><span style="color: #0000BB">3</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">"2 ** 3 ** 2 == %d\n"</span><span style="color: #007700">, </span><span style="color: #0000BB">2 </span><span style="color: #007700">** </span><span style="color: #0000BB">3 </span><span style="color: #007700">** </span><span style="color: #0000BB">2</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= </span><span style="color: #0000BB">2</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">**= </span><span style="color: #0000BB">3</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">"a ==           %d\n"</span><span style="color: #007700">, </span><span style="color: #0000BB">$a</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  
<p class="para">
 Результат выполнения приведённого примера:
</p>

  <div class="example-contents screen">
<div class="cdata"><pre>
2 ** 3 ==      8
2 ** 3 ** 2 == 512
a ==           8
</pre></div>
  </div>
  </div>
 </div>

 <div class="sect2" id="migration56.new-features.use">
  <h3 class="title">Конструкции <code class="literal">use function</code> и <code class="literal">use const</code></h3>

  <p class="para">
   Оператор
   <a href="language.namespaces.importing.php" class="link"><code class="literal">use</code></a>
   расширили, чтобы в дополнение к классам
   поддержать импорт функций и констант.
   Конструкция <code class="literal">use function</code> импортирует функции,
   а конструкция <code class="literal">use const</code> — константы.
  </p>

  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">namespace </span><span style="color: #0000BB">Name\Space </span><span style="color: #007700">{<br />    const </span><span style="color: #0000BB">FOO </span><span style="color: #007700">= </span><span style="color: #0000BB">42</span><span style="color: #007700">;<br /><br />    function </span><span style="color: #0000BB">f</span><span style="color: #007700">()<br />    {<br />        echo </span><span style="color: #0000BB">__FUNCTION__</span><span style="color: #007700">.</span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br />    }<br />}<br /><br />namespace {<br />    use const </span><span style="color: #0000BB">Name\Space\FOO</span><span style="color: #007700">;<br />    use function </span><span style="color: #0000BB">Name\Space\f</span><span style="color: #007700">;<br /><br />    echo </span><span style="color: #0000BB">FOO</span><span style="color: #007700">.</span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br />    </span><span style="color: #0000BB">f</span><span style="color: #007700">();<br />}<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

   
<p class="para">
 Результат выполнения приведённого примера:
</p>

   <div class="example-contents screen">
<div class="cdata"><pre>
42
Name\Space\f
</pre></div>
   </div>
  </div>
 </div>

 <div class="sect2" id="migration56.new-features.phpdbg">
  <h3 class="title">phpdbg</h3>

  <p class="para">
   Теперь PHP содержит интерактивный отладчик phpdbg,
   который реализовали как SAPI-модуль. Подробности даёт
   <a href="book.phpdbg.php" class="link">документация к модулю phpdbg</a>.
  </p>
 </div>

 <div class="sect2" id="migration56.new-features.default-encoding">
  <h3 class="title">Кодировка по умолчанию</h3>

  <p class="para">
   Для функций <span class="function"><a href="function.htmlentities.php" class="function">htmlentities()</a></span>,
   <span class="function"><a href="function.html-entity-decode.php" class="function">html_entity_decode()</a></span> и <span class="function"><a href="function.htmlspecialchars.php" class="function">htmlspecialchars()</a></span>
   добавили директиву <a href="ini.core.php#ini.default-charset" class="link">default_charset</a>, которая
   устанавливает набор символов по умолчанию.
   Обратите внимание: при установке параметров кодировки
   для модулей iconv и mbstring, которые теперь устарели, они будут иметь приоритет
   над ini-параметром default_charset для функций модулей iconv и mbstring.
  </p>

  <p class="para">
   Значение по умолчанию для настройки — <code class="literal">UTF-8</code>.
  </p>
 </div>

 <div class="sect2" id="migration56.new-features.reusable-input">
  <h3 class="title">
   Переиспользование обёртки <a href="wrappers.php.php#wrappers.php.input" class="link"><code class="literal">php://input</code></a>
  </h3>

  <p class="para">
   Поток <a href="wrappers.php.php#wrappers.php.input" class="link"><code class="literal">php://input</code></a>
   теперь разрешается переоткрывать и считывать столько раз, сколько требуется.
   Эта работа также значительно сократила объём памяти, который требуется для обработки
   данных POST-запросов.
  </p>
 </div>

 <div class="sect2" id="migration56.new-features.large-file">
  <h3 class="title">Загрузка больших файлов</h3>

  <p class="para">
   Теперь разрешается загружать файлы размером больше 2 ГБ.
  </p>
 </div>

 <div class="sect2" id="migration56.new-features.gmp">
  <h3 class="title">Модуль <a href="book.gmp.php" class="link">GMP</a> поддерживает перегрузку операторов</h3>

  <p class="para">
   Объекты <a href="book.gmp.php" class="link">GMP</a> теперь поддерживают перегрузку
   операторов и приведение к скалярным типам. Перегрузка операторов
   делает код с функциями модуля GMP выразительнее:
  </p>

  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br />$a </span><span style="color: #007700">= </span><span style="color: #0000BB">gmp_init</span><span style="color: #007700">(</span><span style="color: #0000BB">42</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$b </span><span style="color: #007700">= </span><span style="color: #0000BB">gmp_init</span><span style="color: #007700">(</span><span style="color: #0000BB">17</span><span style="color: #007700">);<br /><br />if (</span><span style="color: #0000BB">version_compare</span><span style="color: #007700">(</span><span style="color: #0000BB">PHP_VERSION</span><span style="color: #007700">, </span><span style="color: #DD0000">'5.6'</span><span style="color: #007700">, </span><span style="color: #DD0000">'&lt;'</span><span style="color: #007700">)) {<br />    echo </span><span style="color: #0000BB">gmp_intval</span><span style="color: #007700">(</span><span style="color: #0000BB">gmp_add</span><span style="color: #007700">(</span><span style="color: #0000BB">$a</span><span style="color: #007700">, </span><span style="color: #0000BB">$b</span><span style="color: #007700">)), </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br />    echo </span><span style="color: #0000BB">gmp_intval</span><span style="color: #007700">(</span><span style="color: #0000BB">gmp_add</span><span style="color: #007700">(</span><span style="color: #0000BB">$a</span><span style="color: #007700">, </span><span style="color: #0000BB">17</span><span style="color: #007700">)), </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br />    echo </span><span style="color: #0000BB">gmp_intval</span><span style="color: #007700">(</span><span style="color: #0000BB">gmp_add</span><span style="color: #007700">(</span><span style="color: #0000BB">42</span><span style="color: #007700">, </span><span style="color: #0000BB">$b</span><span style="color: #007700">)), </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br />} else {<br />    echo </span><span style="color: #0000BB">$a </span><span style="color: #007700">+ </span><span style="color: #0000BB">$b</span><span style="color: #007700">, </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br />    echo </span><span style="color: #0000BB">$a </span><span style="color: #007700">+ </span><span style="color: #0000BB">17</span><span style="color: #007700">, </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br />    echo </span><span style="color: #0000BB">42 </span><span style="color: #007700">+ </span><span style="color: #0000BB">$b</span><span style="color: #007700">, </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

   
<p class="para">
 Результат выполнения приведённого примера:
</p>

   <div class="example-contents screen">
<div class="cdata"><pre>
59
59
59
</pre></div>
   </div>
  </div>

 </div>

 <div class="sect2" id="migration56.new-features.hash-equals">
  <h3 class="title">
   Безопасное сравнение строк функцией <span class="function"><a href="function.hash-equals.php" class="function">hash_equals()</a></span>
   для предотвращения атак по времени
  </h3>

  <p class="para">
   Добавили функцию <span class="function"><a href="function.hash-equals.php" class="function">hash_equals()</a></span> для сравнения двух строк
   за постоянное время. Функция снижает риск атаки по времени; например,
   во время тестирования хеширования паролей функцией <span class="function"><a href="function.crypt.php" class="function">crypt()</a></span>,
   когда невозможно использовать функции <span class="function"><a href="function.password-hash.php" class="function">password_hash()</a></span>
   и <span class="function"><a href="function.password-verify.php" class="function">password_verify()</a></span>, которые не чувствительны к атакам по времени.
  </p>

  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br />$expected  </span><span style="color: #007700">= </span><span style="color: #0000BB">crypt</span><span style="color: #007700">(</span><span style="color: #DD0000">'12345'</span><span style="color: #007700">, </span><span style="color: #DD0000">'$2a$07$usesomesillystringforsalt$'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$correct   </span><span style="color: #007700">= </span><span style="color: #0000BB">crypt</span><span style="color: #007700">(</span><span style="color: #DD0000">'12345'</span><span style="color: #007700">, </span><span style="color: #DD0000">'$2a$07$usesomesillystringforsalt$'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$incorrect </span><span style="color: #007700">= </span><span style="color: #0000BB">crypt</span><span style="color: #007700">(</span><span style="color: #DD0000">'1234'</span><span style="color: #007700">,  </span><span style="color: #DD0000">'$2a$07$usesomesillystringforsalt$'</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">hash_equals</span><span style="color: #007700">(</span><span style="color: #0000BB">$expected</span><span style="color: #007700">, </span><span style="color: #0000BB">$correct</span><span style="color: #007700">));<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">hash_equals</span><span style="color: #007700">(</span><span style="color: #0000BB">$expected</span><span style="color: #007700">, </span><span style="color: #0000BB">$incorrect</span><span style="color: #007700">));<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

   
<p class="para">
 Результат выполнения приведённого примера:
</p>

   <div class="example-contents screen">
<div class="cdata"><pre>
bool(true)
bool(false)
</pre></div>
   </div>
  </div>
 </div>

 <div class="sect2" id="migration56.new-features.debuginfo">
  <h3 class="title">Метод <code class="literal">__debugInfo()</code></h3>

  <p class="para">
   Добавили магический метод <a href="language.oop5.magic.php#language.oop5.magic.debuginfo" class="link">__debugInfo()</a>,
   который разрешает объектам изменять свойства и значения, которые отображаются при выводе объекта
   функцией <span class="function"><a href="function.var-dump.php" class="function">var_dump()</a></span>.
  </p>

  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">class </span><span style="color: #0000BB">C<br /></span><span style="color: #007700">{<br />    private </span><span style="color: #0000BB">$prop</span><span style="color: #007700">;<br /><br />    public function </span><span style="color: #0000BB">__construct</span><span style="color: #007700">(</span><span style="color: #0000BB">$val</span><span style="color: #007700">)<br />    {<br />        </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">prop </span><span style="color: #007700">= </span><span style="color: #0000BB">$val</span><span style="color: #007700">;<br />    }<br /><br />    public function </span><span style="color: #0000BB">__debugInfo</span><span style="color: #007700">()<br />    {<br />        return [<br />            </span><span style="color: #DD0000">'propSquared' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">prop </span><span style="color: #007700">** </span><span style="color: #0000BB">2</span><span style="color: #007700">,<br />        ];<br />    }<br />}<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(new </span><span style="color: #0000BB">C</span><span style="color: #007700">(</span><span style="color: #0000BB">42</span><span style="color: #007700">));<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

   
<p class="para">
 Результат выполнения приведённого примера:
</p>

   <div class="example-contents screen">
<div class="cdata"><pre>
object(C)#1 (1) {
  [&quot;propSquared&quot;]=&gt;
  int(1764)
}
</pre></div>
   </div>
  </div>
 </div>

 <div class="sect2" id="migration56.new-features.gost">
  <h3 class="title">Алгоритм хеширования gost-crypto</h3>

  <p class="para">
   Добавили алгоритм хеширования <code class="literal">gost-crypto</code>.
   Алгоритм реализует функцию хеширования GOST, с которой работают в таблицах CryptoPro S-box,
   которые определяет секция 11.2 стандарта <a href="https://datatracker.ietf.org/doc/html/rfc4357" class="link external">&raquo;&nbsp;RFC 4357</a>.
  </p>
 </div>

 <div class="sect2" id="migration56.new-features.openssl">
  <h3 class="title">Улучшение в протоколах SSL/TLS</h3>

  <p class="para">
   В поддержку протоколов SSL/TLS в PHP 5.6 внесли широкий спектр улучшений. К улучшениям относятся:
   <a href="migration56.incompatible.php#migration56.incompatible.peer-verification" class="link">включение одноранговой проверки по умолчанию</a>,
   поддержка сопоставления отпечатков сертификатов, снижение
   защита от атак повторного согласования по протоколу TLS и много новых
   <a href="context.ssl.php" class="link">параметров SSL-контекста</a>, которые помогают точнее
   контролировать параметры протокола и проверки при работе
   с зашифрованными потоками.
  </p>

  <p class="para">
   Подробнее изменения описывает раздел руководства
   «<a href="migration56.openssl.php" class="link">Изменения OpenSSL в PHP 5.6.x</a>».
  </p>
 </div>

 <div class="sect2" id="migration56.new-features.postgresql">
  <h3 class="title">Поддержка асинхронности в модуле <a href="book.pgsql.php" class="link">pgsql</a></h3>

  <p class="para">
   Модуль <a href="book.pgsql.php" class="link">pgsql</a> теперь поддерживает асинхронные
   соединения и запросы, чем разрешает неблокирующее взаимодействие с базами данных
   PostgreSQL. Асинхронные соединения разрешается устанавливать через константу
   <strong><code><a href="pgsql.constants.php#constant.pgsql-connect-async">PGSQL_CONNECT_ASYNC</a></code></strong>, а новые функции
   <span class="function"><a href="function.pg-connect-poll.php" class="function">pg_connect_poll()</a></span>, <span class="function"><a href="function.pg-socket.php" class="function">pg_socket()</a></span>,
   <span class="function"><a href="function.pg-consume-input.php" class="function">pg_consume_input()</a></span> и <span class="function"><a href="function.pg-flush.php" class="function">pg_flush()</a></span> помогают
   обрабатывать асинхронные соединения и запросы.
  </p>
 </div>
</div><?php manual_footer($setup); ?>