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

contributors($setup);

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

 <div class="sect2" id="migration82.new-features.core">
  <h3 class="title">PHP コア</h3>

  <div class="sect3" id="migration82.new-features.core.sensitiveparameter">
   <h4 class="title">SensitiveParameter アトリビュート</h4>

   <p class="para">
    バックトレースから機密情報を削除するためのアトリビュートとして、
    <code class="code">#[\SensitiveParameter]</code> が追加されました。
    
   </p>
  </div>

  <div class="sect3" id="migration82.new-features.core.error-log-mode-ini">
   <h4 class="title">error_log_mode INI ディレクティブ</h4>

   <p class="para">
    エラーログファイルに対してパーミッションを設定できる INI ディレクティブとして、
    <a href="errorfunc.configuration.php#ini.error-log-mode" class="link">error_log_mode</a> が追加されました。
   </p>
  </div>

  <div class="sect3" id="migration82.new-features.core.enums-property-constant-expression">
   <h4 class="title">定数式の中で、列挙型のプロパティを取得</h4>

   <p class="para">
    定数式の中で、<a href="language.enumerations.php" class="link">列挙型</a> のプロパティを取得できるようになりました。
    
   </p>
  </div>

  <div class="sect3" id="migration82.new-features.core.type-system">
   <h4 class="title">型システムの改善</h4>

   <p class="para">
    <span class="type"><a href="language.types.null.php" class="type null">null</a></span> と <span class="type"><a href="language.types.singleton.php" class="type false">false</a></span> が独立した型として使えるようになりました。
    
   </p>

   <p class="para">
    <span class="type"><a href="language.types.singleton.php" class="type true">true</a></span> 型が追加されました。
    
   </p>

   <p class="para">
    交差型 と union型 が組み合わせて使えるようになりました。
    その場合、型は <abbr title="Disjunctive Normal Form">DNF</abbr> として記す必要があります。
    
   </p>
  </div>

  <div class="sect3" id="migration82.new-features.core.constant-in-traits">
   <h4 class="title">トレイトで定数</h4>

   <p class="para">
    トレイトの中で、定数を定義できるようになりました。
    
   </p>
   
  </div>

  <div class="sect3" id="migration82.new-features.core.readonly-classes">
   <h4 class="title">読み取り専用クラス</h4>

   <p class="para">
    <a href="language.oop5.basic.php#language.oop5.basic.class.readonly" class="link">クラスに対して readonly
    を指定する機能</a> がサポートされました。
    
   </p>
  </div>

 </div>

 <div class="sect2" id="migration82.new-features.curl">
  <h3 class="title">cURL</h3>

  <p class="para">
   <strong><code><a href="curl.constants.php#constant.curlinfo-effective-method">CURLINFO_EFFECTIVE_METHOD</a></code></strong> オプションが追加されました。
   これは、<span class="function"><a href="function.curl-getinfo.php" class="function">curl_getinfo()</a></span> の戻り値として、
   有効な <abbr title="Hypertext Transfer Protocol">HTTP</abbr> メソッドの値を返します。
  </p>

  <p class="para">
   libcurl 7.62 から 7.80 までに追加された、
   <a href="migration82.constants.php#migration82.constants.curl" class="link">新しい複数の定数</a> が使えるようになりました。
  </p>

  <p class="para">
   接続を維持するためのチェックを行う関数として、
   <span class="function"><a href="function.curl_upkeep.php" class="function">curl_upkeep()</a></span> が追加されました。
  </p>
 </div>

 <div class="sect2" id="migration82.new-features.dba">
  <h3 class="title">DBA</h3>

  <p class="para">
   データベースファイルを作成する際にサブディレクトリを作るかどうかを決めるフラグとして、
   <strong><code><a href="dba.constants.php#constant.dba-lmdb-use-sub-dir">DBA_LMDB_USE_SUB_DIR</a></code></strong> と
   <strong><code><a href="dba.constants.php#constant.dba-lmdb-no-sub-dir">DBA_LMDB_NO_SUB_DIR</a></code></strong> が追加されました。
   これらは、LMDB ドライバで使えます。
  </p>
 </div>

 <div class="sect2" id="migration82.new-features.oci8">
  <h3 class="title">OCI8</h3>

  <p class="para">
   <a href="oci8.configuration.php#ini.oci8.prefetch-lob-size" class="link">oci8.prefetch_lob_size</a> INI ディレクティブと、
   <span class="function"><a href="function.oci-set-prefetch-lob.php" class="function">oci_set_prefetch_lob()</a></span> が追加されました。
   これらを使うと、LOB(ラージオブジェクト) を取得する際に、PHP と Oracle Database 間の通信回数を削減することで、
   LOB への問い合わせのパフォーマンスチューニングを行うことができます。
  </p>
 </div>

 <div class="sect2" id="migration82.new-features.openssl">
  <h3 class="title">OpenSSL</h3>

  <p class="para">
   chacha20-poly1305 向けに AEAD のサポートが追加されました。
  </p>
 </div>

 <div class="sect2" id="migration82.new-features.odbc">
  <h3 class="title">ODBC</h3>

  <p class="para">
   新しい関数 <span class="function"><a href="function.odbc-connection-string-is-quoted.php" class="function">odbc_connection_string_is_quoted()</a></span>,
   <span class="function"><a href="function.odbc-connection-string-should-quote.php" class="function">odbc_connection_string_should_quote()</a></span>,
   <span class="function"><a href="function.odbc-connection-string-quote.php" class="function">odbc_connection_string_quote()</a></span> が追加されました。
   これらは主に、ODBC や PDO_ODBC 拡張モジュールの裏側で使われるものです。
   ただ、ユニットテストを容易にしたり、
   ユーザーアプリケーションやライブラリ自体がクォートを行えるようにする目的で、
   ユーザーが使える関数として公開されています。
  </p>
 </div>

 <div class="sect2" id="migration82.new-features.pcre">
  <h3 class="title">PCRE</h3>

  <p class="para">
   修飾子 <code class="literal">n</code> (NO_AUTO_CAPTURE) のサポートが追加されました。
   これを使うと、単純な <code class="code">(xyz)</code> 形式でのグループ化ではキャプチャを行いません。
   <code class="code">(?&lt;name&gt;xyz)</code> のような、名前付きのグループ化を使う場合にのみ、
   キャプチャを行うようになります。
   これによって影響を受けるのは、どのグループがキャプチャされるかだけです。
   番号付きのサブパターンによる参照もまだ使えますし、
   その場合マッチ結果が格納される配列には数値が含まれています。
  </p>
 </div>

 <div class="sect2" id="migration82.new-features.random">
  <h3 class="title">Random 拡張モジュール</h3>

  <p class="para">
   乱数生成器に関連する既存の実装を整理し、統合する新しい拡張モジュールが追加されました。
   新しく、かつ優れた乱数生成器が使えるようになり、スコープの問題も解消されています。
   
   
  </p>
 </div>

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