<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/migration71.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ja',
  ),
  'this' => 
  array (
    0 => 'migration71.new-features.php',
    1 => '新機能',
    2 => '新機能',
  ),
  'up' => 
  array (
    0 => 'migration71.php',
    1 => 'PHP 7.0.x から PHP 7.1.x への移行',
  ),
  'prev' => 
  array (
    0 => 'migration71.php',
    1 => 'PHP 7.0.x から PHP 7.1.x への移行',
  ),
  'next' => 
  array (
    0 => 'migration71.new-functions.php',
    1 => '新しい関数',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ja',
    'path' => 'appendices/migration71/new-features.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="migration71.new-features" class="sect1">
 <h2 class="title">新機能</h2>

 <div class="sect2" id="migration71.new-features.nullable-types">
  <h3 class="title">nullable な型</h3>

  <p class="para">
   パラメータや戻り値の型宣言で nullable 指定ができるようになりました。
   型の前にクエスチョンマークをつけると、nullable であることを指定できます。
   nullable 指定をすると、指定した型だけでなく <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> も渡せるようになります。
  </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">testReturnA</span><span style="color: #007700">(): ?</span><span style="color: #0000BB">string<br /></span><span style="color: #007700">{<br />    return </span><span style="color: #DD0000">'elePHPant'</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">testReturnA</span><span style="color: #007700">());<br /><br />function </span><span style="color: #0000BB">testReturnB</span><span style="color: #007700">(): ?</span><span style="color: #0000BB">string<br /></span><span style="color: #007700">{<br />    return </span><span style="color: #0000BB">null</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">testReturnB</span><span style="color: #007700">());<br /><br />function </span><span style="color: #0000BB">test</span><span style="color: #007700">(?</span><span style="color: #0000BB">string $name</span><span style="color: #007700">)<br />{<br />    </span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$name</span><span style="color: #007700">);<br />}<br /><br /></span><span style="color: #0000BB">test</span><span style="color: #007700">(</span><span style="color: #DD0000">'elePHPant'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">test</span><span style="color: #007700">(</span><span style="color: #0000BB">null</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">test</span><span style="color: #007700">();</span></span></code></div>
   </div>

   <p class="para">上の例の出力は以下となります。</p>
   <div class="example-contents screen">
<div class="cdata"><pre>
string(9) &quot;elePHPant&quot;
NULL
string(9) &quot;elePHPant&quot;
NULL
Fatal error: Uncaught ArgumentCountError: Too few arguments to function test(), 0 passed in...
</pre></div>
   </div>
  </div>
 </div>

 <div class="sect2" id="migration71.new-features.void-functions">
  <h3 class="title">void 関数</h3>

  <p class="para">
   戻り値の型として <span class="type"><span class="type"><a href="language.types.void.php" class="type void">void</a></span></span> が導入されました。戻り値の型を void
   と宣言した関数は、関数内での return 文を省略するか、あるいは空の return を使う必要があります。
   void 関数から <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> を返すことはできません。
  </p>

  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">function </span><span style="color: #0000BB">swap</span><span style="color: #007700">(&amp;</span><span style="color: #0000BB">$left</span><span style="color: #007700">, &amp;</span><span style="color: #0000BB">$right</span><span style="color: #007700">): </span><span style="color: #0000BB">void<br /></span><span style="color: #007700">{<br />    if (</span><span style="color: #0000BB">$left </span><span style="color: #007700">=== </span><span style="color: #0000BB">$right</span><span style="color: #007700">) {<br />        return;<br />    }<br /><br />    </span><span style="color: #0000BB">$tmp </span><span style="color: #007700">= </span><span style="color: #0000BB">$left</span><span style="color: #007700">;<br />    </span><span style="color: #0000BB">$left </span><span style="color: #007700">= </span><span style="color: #0000BB">$right</span><span style="color: #007700">;<br />    </span><span style="color: #0000BB">$right </span><span style="color: #007700">= </span><span style="color: #0000BB">$tmp</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= </span><span style="color: #0000BB">1</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$b </span><span style="color: #007700">= </span><span style="color: #0000BB">2</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">swap</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">$a</span><span style="color: #007700">, </span><span style="color: #0000BB">$b</span><span style="color: #007700">);</span></span></code></div>
   </div>

   <p class="para">上の例の出力は以下となります。</p>
   <div class="example-contents screen">
<div class="cdata"><pre>
null
int(2)
int(1)
</pre></div>
   </div>
  </div>

  <p class="para">
   void 関数の戻り値を使おうとした場合はその値は <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> と評価されます。
   警告は発生しません。警告を発生させると、一般的な高階関数の利用にも影響するからです。
  </p>
 </div>

 <div class="sect2" id="migration71.new-features.symmetric-array-destructuring">
  <h3 class="title">対称的な配列の分解</h3>

  <p class="para">
   配列の短縮構文 (<code class="literal">[]</code>) を使って、
   代入用に配列の値を取り出せるようになりました (<code class="literal">foreach</code> でも使えます)。
   これは、<span class="function"><a href="function.list.php" class="function">list()</a></span> の代替として使えます
   (<span class="function"><a href="function.list.php" class="function">list()</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 />$data </span><span style="color: #007700">= [<br />    [</span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #DD0000">'Tom'</span><span style="color: #007700">],<br />    [</span><span style="color: #0000BB">2</span><span style="color: #007700">, </span><span style="color: #DD0000">'Fred'</span><span style="color: #007700">],<br />];<br /><br /></span><span style="color: #FF8000">// list() 形式<br /></span><span style="color: #007700">list(</span><span style="color: #0000BB">$id1</span><span style="color: #007700">, </span><span style="color: #0000BB">$name1</span><span style="color: #007700">) = </span><span style="color: #0000BB">$data</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">];<br /><br /></span><span style="color: #FF8000">// [] 形式<br /></span><span style="color: #007700">[</span><span style="color: #0000BB">$id1</span><span style="color: #007700">, </span><span style="color: #0000BB">$name1</span><span style="color: #007700">] = </span><span style="color: #0000BB">$data</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">];<br /><br /></span><span style="color: #FF8000">// list() 形式<br /></span><span style="color: #007700">foreach (</span><span style="color: #0000BB">$data </span><span style="color: #007700">as list(</span><span style="color: #0000BB">$id</span><span style="color: #007700">, </span><span style="color: #0000BB">$name</span><span style="color: #007700">)) {<br />    </span><span style="color: #FF8000">// $id と $name を使う処理をここに書きます<br /></span><span style="color: #007700">}<br /><br /></span><span style="color: #FF8000">// [] 形式<br /></span><span style="color: #007700">foreach (</span><span style="color: #0000BB">$data </span><span style="color: #007700">as [</span><span style="color: #0000BB">$id</span><span style="color: #007700">, </span><span style="color: #0000BB">$name</span><span style="color: #007700">]) {<br />    </span><span style="color: #FF8000">// $id と $name を使う処理をここに書きます<br /></span><span style="color: #007700">}</span></span></code></div>
   </div>

  </div>
 </div>

 <div class="sect2" id="migration71.new-features.class-constant-visibility">
  <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 /></span><span style="color: #007700">class </span><span style="color: #0000BB">ConstDemo<br /></span><span style="color: #007700">{<br />    const </span><span style="color: #0000BB">PUBLIC_CONST_A </span><span style="color: #007700">= </span><span style="color: #0000BB">1</span><span style="color: #007700">;<br />    public const </span><span style="color: #0000BB">PUBLIC_CONST_B </span><span style="color: #007700">= </span><span style="color: #0000BB">2</span><span style="color: #007700">;<br />    protected const </span><span style="color: #0000BB">PROTECTED_CONST </span><span style="color: #007700">= </span><span style="color: #0000BB">3</span><span style="color: #007700">;<br />    private const </span><span style="color: #0000BB">PRIVATE_CONST </span><span style="color: #007700">= </span><span style="color: #0000BB">4</span><span style="color: #007700">;<br />}</span></span></code></div>
   </div>

  </div>
 </div>

 <div class="sect2" id="migration71.new-features.iterable-pseudo-type">
  <h3 class="title"><span class="type"><a href="language.types.iterable.php" class="type iterable">iterable</a></span> 擬似型</h3>

  <p class="para">
   新しい擬似型 (<span class="type"><a href="language.types.callable.php" class="type callable">callable</a></span> と同じような型) である
   <span class="type"><a href="language.types.iterable.php" class="type iterable">iterable</a></span> が導入されました。
   パラメータおよび戻り値の型指定で使うことができます。
   配列か、あるいは <span class="classname"><a href="class.traversable.php" class="classname">Traversable</a></span>
   インターフェイスを実装したオブジェクトを受け付けるようになります。
   派生型に貸しては、子クラスのパラメータの型が、
   親クラスの <span class="type"><a href="language.types.array.php" class="type array">array</a></span> や <span class="classname"><a href="class.traversable.php" class="classname">Traversable</a></span>
   を拡張して <span class="type"><a href="language.types.iterable.php" class="type iterable">iterable</a></span> に広げることができます。
   戻り値の型に関しては、親クラスの <span class="type"><a href="language.types.iterable.php" class="type iterable">iterable</a></span> 型指定を子クラスで
   配列あるいはオブジェクト (<span class="classname"><a href="class.traversable.php" class="classname">Traversable</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 /></span><span style="color: #007700">function </span><span style="color: #0000BB">iterator</span><span style="color: #007700">(</span><span style="color: #0000BB">iterable $iter</span><span style="color: #007700">)<br />{<br />    foreach (</span><span style="color: #0000BB">$iter </span><span style="color: #007700">as </span><span style="color: #0000BB">$val</span><span style="color: #007700">) {<br />        </span><span style="color: #FF8000">//<br />    </span><span style="color: #007700">}<br />}</span></span></code></div>
   </div>

  </div>
 </div>

 <div class="sect2" id="migration71.new-features.mulit-catch-exception-handling">
  <h3 class="title">例外処理における複数の例外の catch</h3>

  <p class="para">
   ひとつの catch ブロックで複数の例外を扱えるようになりました。
   パイプ文字 (<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 /></span><span style="color: #007700">try {<br />    </span><span style="color: #FF8000">// 何かのコード<br /></span><span style="color: #007700">} catch (</span><span style="color: #0000BB">FirstException </span><span style="color: #007700">| </span><span style="color: #0000BB">SecondException $e</span><span style="color: #007700">) {<br />    </span><span style="color: #FF8000">// FirstException と SecondException をこのブロックで処理します<br /></span><span style="color: #007700">}</span></span></code></div>
   </div>

  </div>
 </div>

 <div class="sect2" id="migration71.new-features.support-for-keys-in-list">
  <h3 class="title"><span class="function"><a href="function.list.php" class="function">list()</a></span> におけるキーのサポート</h3>

  <p class="para">
   <span class="function"><a href="function.list.php" class="function">list()</a></span> (あるいはその短縮版である <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 />$data </span><span style="color: #007700">= [<br />    [</span><span style="color: #DD0000">"id" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #DD0000">"name" </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'Tom'</span><span style="color: #007700">],<br />    [</span><span style="color: #DD0000">"id" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">2</span><span style="color: #007700">, </span><span style="color: #DD0000">"name" </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'Fred'</span><span style="color: #007700">],<br />];<br /><br /></span><span style="color: #FF8000">// list() 形式<br /></span><span style="color: #007700">list(</span><span style="color: #DD0000">"id" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">$id1</span><span style="color: #007700">, </span><span style="color: #DD0000">"name" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">$name1</span><span style="color: #007700">) = </span><span style="color: #0000BB">$data</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">];<br /><br /></span><span style="color: #FF8000">// [] 形式<br /></span><span style="color: #007700">[</span><span style="color: #DD0000">"id" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">$id1</span><span style="color: #007700">, </span><span style="color: #DD0000">"name" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">$name1</span><span style="color: #007700">] = </span><span style="color: #0000BB">$data</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">];<br /><br /></span><span style="color: #FF8000">// list() 形式<br /></span><span style="color: #007700">foreach (</span><span style="color: #0000BB">$data </span><span style="color: #007700">as list(</span><span style="color: #DD0000">"id" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">$id</span><span style="color: #007700">, </span><span style="color: #DD0000">"name" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">$name</span><span style="color: #007700">)) {<br />    </span><span style="color: #FF8000">// $id と $name を使う処理をここに書きます<br /></span><span style="color: #007700">}<br /><br /></span><span style="color: #FF8000">// [] 形式<br /></span><span style="color: #007700">foreach (</span><span style="color: #0000BB">$data </span><span style="color: #007700">as [</span><span style="color: #DD0000">"id" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">$id</span><span style="color: #007700">, </span><span style="color: #DD0000">"name" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">$name</span><span style="color: #007700">]) {<br />    </span><span style="color: #FF8000">// $id と $name を使う処理をここに書きます<br /></span><span style="color: #007700">}</span></span></code></div>
   </div>

  </div>
 </div>

 <div class="sect2" id="migration71.new-features.support-for-negative-string-offsets">
  <h3 class="title">負の文字列オフセットのサポート</h3>

  <p class="para">
   <a href="book.strings.php" class="link">文字列操作関数</a>
   のうちオフセット指定のできるものすべてについて、負のオフセットを指定できるようになりました。
   <code class="literal">[]</code> や <code class="literal">{}</code> による
   <a href="language.types.string.php#language.types.string.substr" class="link">文字列への文字単位のアクセス</a>
   についても同様です。
   負のオフセットは、文字列の末尾からのオフセットと解釈されます。
  </p>

  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />var_dump</span><span style="color: #007700">(</span><span style="color: #DD0000">"abcdef"</span><span style="color: #007700">[-</span><span style="color: #0000BB">2</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">strpos</span><span style="color: #007700">(</span><span style="color: #DD0000">"aabbcc"</span><span style="color: #007700">, </span><span style="color: #DD0000">"b"</span><span style="color: #007700">, -</span><span style="color: #0000BB">3</span><span style="color: #007700">));</span></span></code></div>
   </div>

   <p class="para">上の例の出力は以下となります。</p>
   <div class="example-contents screen">
<div class="cdata"><pre>
string (1) &quot;e&quot;
int(3)
</pre></div>
   </div>
  </div>

  <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 />$string </span><span style="color: #007700">= </span><span style="color: #DD0000">'bar'</span><span style="color: #007700">;<br />echo </span><span style="color: #DD0000">"The last character of '</span><span style="color: #0000BB">$string</span><span style="color: #DD0000">' is '</span><span style="color: #0000BB">$string</span><span style="color: #007700">[-</span><span style="color: #0000BB">1</span><span style="color: #007700">]</span><span style="color: #DD0000">'.\n"</span><span style="color: #007700">;<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>
The last character of &#039;bar&#039; is &#039;r&#039;.
</pre></div>
   </div>
  </div>
 </div>

 <div class="sect2" id="migration71.new-features.support-for-aead-in-ext-openssl">
  <h3 class="title">ext/openssl における AEAD のサポート</h3>

  <p class="para">
   <span class="function"><a href="function.openssl-encrypt.php" class="function">openssl_encrypt()</a></span> および
   <span class="function"><a href="function.openssl-decrypt.php" class="function">openssl_decrypt()</a></span> の追加のパラメータで、
   AEAD (GCM モードおよび CCM モード) をサポートするようになりました。
  </p>
 </div>

 <div class="sect2" id="migration71.new-features.convert-callables-to-closures">
  <h3 class="title"><span class="methodname"><a href="closure.fromcallable.php" class="methodname">Closure::fromCallable()</a></span> による callables から <span class="classname"><a href="class.closure.php" class="classname">Closure</a></span> への変換</h3>

  <p class="para">
   <span class="classname"><a href="class.closure.php" class="classname">Closure</a></span> クラスに新しいstaticメソッドが追加されました。
   <span class="type"><a href="language.types.callable.php" class="type callable">callable</a></span> を、簡単に
   <span class="classname"><a href="class.closure.php" class="classname">Closure</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 /></span><span style="color: #007700">class </span><span style="color: #0000BB">Test<br /></span><span style="color: #007700">{<br />    public function </span><span style="color: #0000BB">exposeFunction</span><span style="color: #007700">()<br />    {<br />        return </span><span style="color: #0000BB">Closure</span><span style="color: #007700">::</span><span style="color: #0000BB">fromCallable</span><span style="color: #007700">([</span><span style="color: #0000BB">$this</span><span style="color: #007700">, </span><span style="color: #DD0000">'privateFunction'</span><span style="color: #007700">]);<br />    }<br /><br />    private function </span><span style="color: #0000BB">privateFunction</span><span style="color: #007700">(</span><span style="color: #0000BB">$param</span><span style="color: #007700">)<br />    {<br />        </span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$param</span><span style="color: #007700">);<br />    }<br />}<br /><br /></span><span style="color: #0000BB">$privFunc </span><span style="color: #007700">= (new </span><span style="color: #0000BB">Test</span><span style="color: #007700">)-&gt;</span><span style="color: #0000BB">exposeFunction</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$privFunc</span><span style="color: #007700">(</span><span style="color: #DD0000">'some value'</span><span style="color: #007700">);</span></span></code></div>
   </div>

   <p class="para">上の例の出力は以下となります。</p>
   <div class="example-contents screen">
<div class="cdata"><pre>
string(10) &quot;some value&quot;
</pre></div>
   </div>
  </div>
 </div>

 <div class="sect2" id="migration71.new-features.asynchronous-signal-handling">
  <h3 class="title">非同期シグナルハンドリング</h3>

  <p class="para">
   新しい関数 <span class="function"><a href="function.pcntl-async-signals.php" class="function">pcntl_async_signals()</a></span>
   が追加されました。これは、tick を使わない非同期シグナルハンドリングを有効にするものです
   (tick は相当大きなオーバーヘッドになります)。
  </p>

  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />pcntl_async_signals</span><span style="color: #007700">(</span><span style="color: #0000BB">true</span><span style="color: #007700">); </span><span style="color: #FF8000">// 非同期シグナルを有効にします<br /><br /></span><span style="color: #0000BB">pcntl_signal</span><span style="color: #007700">(</span><span style="color: #0000BB">SIGHUP</span><span style="color: #007700">,  function(</span><span style="color: #0000BB">$sig</span><span style="color: #007700">) {<br />    echo </span><span style="color: #DD0000">"SIGHUP\n"</span><span style="color: #007700">;<br />});<br /><br /></span><span style="color: #0000BB">posix_kill</span><span style="color: #007700">(</span><span style="color: #0000BB">posix_getpid</span><span style="color: #007700">(), </span><span style="color: #0000BB">SIGHUP</span><span style="color: #007700">);</span></span></code></div>
   </div>

   <p class="para">上の例の出力は以下となります。</p>
   <div class="example-contents screen">
<div class="cdata"><pre>
SIGHUP
</pre></div>
   </div>
  </div>
 </div>

 <div class="sect2" id="migration71.new-features.http2-server-push-support-in-ext-curl">
  <h3 class="title">ext/curl における HTTP/2 サーバープッシュのサポート</h3>

  <p class="para">
   CURL 拡張モジュールがサーバープッシュに対応するようになりました
   (curl バージョン 7.46 以降が必要です)。
   <span class="function"><a href="function.curl-multi-setopt.php" class="function">curl_multi_setopt()</a></span> 関数に新しい定数
   <strong><code><a href="curl.constants.php#constant.curlmopt-pushfunction">CURLMOPT_PUSHFUNCTION</a></code></strong> を指定すれば、この機能を使えます。
   また、定数
   <strong><code><a href="curl.constants.php#constant.curl-push-ok">CURL_PUSH_OK</a></code></strong> と <strong><code><a href="curl.constants.php#constant.curl-push-deny">CURL_PUSH_DENY</a></code></strong>
   も新たに追加されました。
   これらは、サーバープッシュコールバックの実行を許可したり拒否したりするものです。
  </p>
 </div>

 <div class="sect2" id="migration71.new-features.stream-context-options">
  <h3 class="title">ストリームコンテキストオプション</h3>

  <p class="para">
   <a href="context.socket.php#context.socket.tcp_nodelay" class="link">tcp_nodelay</a>
   ストリームコンテキストオプションが追加されました。
  </p>
 </div>

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