<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/migration85.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ja',
  ),
  'this' => 
  array (
    0 => 'migration85.deprecated.php',
    1 => 'PHP 8.5.x で推奨されなくなる機能',
    2 => 'PHP 8.5.x で推奨されなくなる機能',
  ),
  'up' => 
  array (
    0 => 'migration85.php',
    1 => 'PHP 8.4.x から PHP 8.5.x への移行',
  ),
  'prev' => 
  array (
    0 => 'migration85.incompatible.php',
    1 => '下位互換性のない変更点',
  ),
  'next' => 
  array (
    0 => 'migration85.other-changes.php',
    1 => 'その他の変更',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ja',
    'path' => 'appendices/migration85/deprecated.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="migration85.deprecated" class="sect1">
 <h2 class="title">PHP 8.5.x で推奨されなくなる機能</h2>

 <div class="sect2" id="migration85.deprecated.core">
  <h3 class="title">PHP コア</h3>

  <div class="sect3" id="migration85.deprecated.core.changes-to-user-output-handler">
   <h4 class="title">ユーザー定義の出力ハンドラに関する変更</h4>
   

   <p class="simpara">
    ユーザー定義の出力ハンドラから(たとえば <span class="function"><a href="function.echo.php" class="function">echo</a></span>
    などを使って) 出力を行うことは、推奨されなくなりました。
    この推奨されない警告は、
    出力を生成するハンドラをバイパスして、
    それが確実に表示されるようにします。
    つまり、ネストされた出力ハンドラが存在する場合、
    次のハンドラは引き続き使われるということです。
   </p>

  </div>

  <div class="sect3" id="migration85.deprecated.core.non-canonical-cast-names">
   <h4 class="title">正規化されていない型名でのキャスト</h4>
   

   <p class="simpara">
    正規化されていない型名
    <code class="literal">(boolean)</code>,
    <code class="literal">(integer)</code>,
    <code class="literal">(double)</code>,
    <code class="literal">(binary)</code> でキャストすることは、
    推奨されなくなりました。
    <code class="literal">(bool)</code>, <code class="literal">(int)</code>,
    <code class="literal">(float)</code>, <code class="literal">(string)</code>
    をそれぞれ使ってください。
   </p>

  </div>

  <div class="sect3" id="migration85.deprecated.core.case-statements-with-semicolon">
   <h4 class="title">セミコロンでcase文を終了させる</h4>
   

   <p class="simpara">
    case文をコロンではなく、セミコロンで終了させることは、
    推奨されなくなりました。
   </p>

  </div>

  <div class="sect3" id="migration85.deprecated.core.the-backtick-operator">
   <h4 class="title">バッククォート演算子</h4>
   

   <p class="simpara">
    <span class="function"><a href="function.shell-exec.php" class="function">shell_exec()</a></span>
    のエイリアスとして使われている
    <a href="language.operators.execution.php" class="link">バッククォート演算子</a>
    は、推奨されなくなりました。
   </p>

  </div>

  <div class="sect3" id="migration85.deprecated.core.return-null-from-debuginfo">
   <h4 class="title">__debugInfo() から null を返す</h4>
   

   <p class="simpara">
    <a href="language.oop5.magic.php#language.oop5.magic.debuginfo" class="link">__debugInfo()</a>
    から <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> を返すことは、推奨されなくなりました。
    空の配列を返してください。
   </p>

  </div>

  <div class="sect3" id="migration85.deprecated.core.return-memleaks-ini-directive">
   <h4 class="title">report_memleaks INI ディレクティブ</h4>
   

   <p class="simpara">
    INI ディレクティブ
    <a href="errorfunc.configuration.php#ini.report-memleaks" class="link">report_memleaks</a> は、
    推奨されなくなりました。
   </p>

  </div>

  <div class="sect3" id="migration85.deprecated.core.constant-redeclaration">
   <h4 class="title">定数の再宣言</h4>
   

   <p class="simpara">
    同じ定数を再宣言することは、推奨されなくなりました。
    これについては既に警告は発生しており、
    (警告の種類が変わるだけで)それが続くことに注意してください。
   </p>

  </div>

  <div class="sect3" id="migration85.deprecated.core.closure-binding-issues">
   <h4 class="title">クロージャのバインド時の問題</h4>
   

   <p class="para">
    既に <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> が発生している、
    クロージャのバインド時の以下の問題は、推奨されなくなりました:

    <ul class="simplelist">
     <li>インスタンスを static なクロージャにバインドすること</li>
     <li>メソッドが定義されているクラス(またはサブクラス)のインスタンスでないオブジェクトに、メソッドをバインドすること</li>
     <li>メソッドから $this のバインドを解除すること</li>
     <li>`$this` を使っているクロージャから、$this のバインドを解除すること</li>
     <li>内部クラスのスコープにクロージャをバインドすること</li>
     <li>関数やメソッドから生成したクロージャのスコープを、再度バインドすること</li>
    </ul>
   </p>

  </div>

  <div class="sect3" id="migration85.deprecated.core.sleep-and-wakeup-magic-methods">
   <h4 class="title">マジックメソッド __sleep() と __wakeup()</h4>
   
   

   <p class="simpara">
    マジックメソッド <a href="language.oop5.magic.php#object.sleep" class="link">__sleep()</a> と
    <a href="language.oop5.magic.php#object.wakeup" class="link">__wakeup()</a> は、
    soft-deprecated 扱いになりました。
    代わりに、<a href="language.oop5.magic.php#object.serialize" class="link">__serialize()</a> と
    <a href="language.oop5.magic.php#object.unserialize" class="link">__unserialize()</a> を使ってください。
    PHP 7 との互換性が必要な場合は、両方を同時に使ってください。
   </p>

  </div>

  <div class="sect3" id="migration85.deprecated.core.using-null-as-an-array-offset">
   <h4 class="title">配列のオフセットに null を指定</h4>
   

   <p class="simpara">
    配列のオフセットに <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> を指定したり、
    <span class="function"><a href="function.array-key-exists.php" class="function">array_key_exists()</a></span> をコールする際に <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> を指定することは、
    推奨されなくなりました。
    代わりに、空文字列を使ってください。
   </p>

  </div>

  <div class="sect3" id="migration85.deprecated.core.incrementing-non-numeric-strings">
   <h4 class="title">数値でない文字列をインクリメント</h4>
   

   <p class="simpara">
    数値でない文字列をインクリメントすることは、推奨されなくなりました。
    <span class="function"><a href="function.str-increment.php" class="function">str_increment()</a></span> を代わりに使ってください。
   </p>

  </div>

  <div class="sect3" id="migration85.deprecated.core.register-argc-argv-directive">
   <h4 class="title">register_argc_argv INI ディレクティブ</h4>
   

   <p class="simpara">
    CLI でない SAPI において、
    クエリ文字列から <code class="code">$_SERVER[&#039;argc&#039;]</code> と
    <code class="code">$_SERVER[&#039;argv&#039;]</code> の値を取得する機能は、
    推奨されなくなりました。
    安全な使い方を検証した上で <code class="literal">register_argc_argv=0</code>
    を設定し、情報を取得する手段を <var class="varname"><a href="reserved.variables.get.php" class="classname">$_GET</a></var> や
    <code class="code">$_SERVER[&#039;QUERY_STRING&#039;]</code> に切り替えてください。
   </p>

  </div>

 </div>

 <div class="sect2" id="migration85.deprecated.curl">
  <h3 class="title">cURL</h3>

  <p class="simpara">
   <span class="function"><a href="function.curl-close.php" class="function">curl_close()</a></span> 関数は、推奨されなくなりました。
   <span class="classname"><a href="class.curlhandle.php" class="classname">CurlHandle</a></span> オブジェクトが、
   自動でリソースを開放するためです。
   
  </p>

  <p class="simpara">
   <span class="function"><a href="function.curl-share-close.php" class="function">curl_share_close()</a></span> 関数は、推奨されなくなりました。
   <span class="classname"><a href="class.curlsharehandle.php" class="classname">CurlShareHandle</a></span> オブジェクトが、
   自動でリソースを開放するためです。
   
  </p>

 </div>

 <div class="sect2" id="migration85.deprecated.date">
  <h3 class="title">Date</h3>

  <p class="simpara">
   定数 <strong><code><a href="datetime.constants.php#constant.date-rfc7231">DATE_RFC7231</a></code></strong> と
   <strong><code><a href="class.datetimeinterface.php#datetimeinterface.constants.rfc7231">DateTimeInterface::RFC7231</a></code></strong>
   は、推奨されなくなりました。
   これらに関連付けられているタイムゾーンは無視され、
   常に GMT を使っているためです。
   
  </p>

 </div>

 <div class="sect2" id="migration85.deprecated.fileinfo">
  <h3 class="title">FileInfo</h3>

  <p class="simpara">
   <span class="function"><a href="function.finfo-close.php" class="function">finfo_close()</a></span> 関数は、推奨されなくなりました。
   <span class="classname"><a href="class.finfo.php" class="classname">finfo</a></span> オブジェクトが、
   自動でリソースを開放するためです。
   
  </p>

  <p class="simpara">
   <span class="function"><a href="function.finfo-buffer.php" class="function">finfo_buffer()</a></span> 関数の <code class="parameter">$context</code>
   パラメータは、推奨されなくなりました。
   このパラメータは無視されているためです。
   
  </p>

 </div>

 <div class="sect2" id="migration85.deprecated.gd">
  <h3 class="title">GD</h3>

  <p class="simpara">
   <span class="function"><a href="function.imagedestroy.php" class="function">imagedestroy()</a></span> 関数は、推奨されなくなりました。
   <span class="classname"><a href="class.gdimage.php" class="classname">GdImage</a></span> オブジェクトが、
   自動でリソースを開放するためです。
   
  </p>

 </div>

 <div class="sect2" id="migration85.deprecated.hash">
  <h3 class="title">Hash</h3>

  <p class="simpara">
   <strong><code><a href="mhash.constants.php#constant.mhash-adler32">MHASH_<span class="replaceable">*</span></a></code></strong> 定数は、
   推奨されなくなりました。
   
  </p>

 </div>

 <div class="sect2" id="migration85.deprecated.intl">
  <h3 class="title">Intl</h3>

  <p class="simpara">
   INI ディレクティブ
   <a href="intl.configuration.php#ini.intl.error-level" class="link">intl.error_level</a> は、
   推奨されなくなりました。
   エラーは手動でチェックするか、
   INI ディレクティブ
   <a href="intl.configuration.php#ini.intl.use-exceptions" class="link">intl.use_exceptions</a>
   を使って例外を有効にすべきです。
   
  </p>

 </div>

 <div class="sect2" id="migration85.deprecated.ldap">
  <h3 class="title">LDAP</h3>

  <p class="para">
   特定の Oracle Instant Client の呼び出しや定数は、
   推奨されなくなりました。

   影響を受ける呼び出しは以下の通りです:
   <ul class="simplelist">
    <li>wallet のサポートを使った <span class="function"><a href="function.ldap-connect.php" class="function">ldap_connect()</a></span></li>
    <li><span class="function"><a href="function.ldap-connect-wallet.php" class="function">ldap_connect_wallet()</a></span></li>
   </ul>

   影響を受ける定数は以下の通りです:
   <ul class="simplelist">
    <li><strong><code>GSLC_SSL_NO_UATH</code></strong></li>
    <li><strong><code>GSLC_SSL_ONEWAY_UATH</code></strong></li>
    <li><strong><code>GSLC_SSL_TWOWAY_UATH</code></strong></li>
   </ul>
   
  </p>

 </div>

 <div class="sect2" id="migration85.deprecated.mysqli">
  <h3 class="title">MySQLi</h3>

  <p class="simpara">
   エイリアスとして定義されている
   <span class="function"><a href="function.mysqli-execute.php" class="function">mysqli_execute()</a></span> 関数は、
   推奨されなくなりました。
   代わりに <span class="function"><a href="mysqli-stmt.execute.php" class="function">mysqli_stmt_execute()</a></span> を使いましょう。
   
  </p>

 </div>

 <div class="sect2" id="migration85.deprecated.openssl">
  <h3 class="title">OpenSSL</h3>

  <p class="simpara">
   <span class="function"><a href="function.openssl-pkey-derive.php" class="function">openssl_pkey_derive()</a></span> の <code class="parameter">$key_length</code>
   パラメータは、推奨されなくなりました。
   このパラメータは無視されているか、キーを切り捨てるかしており、
   それらの挙動がセキュリティ上の脆弱性になりうるためです。
   
  </p>

 </div>

 <div class="sect2" id="migration85.deprecated.pdo">
  <h3 class="title">PDO</h3>

  <p class="simpara">
   <code class="literal">&quot;uri:&quot;</code> DSN スキームは、推奨されなくなりました。
   リモートURI から生じる、DSN に関するセキュリティ上の懸念があるためです。
   
  </p>

  <p class="para">
   PDO クラスのドライバ特有の定数は、推奨されなくなりました。
   影響を受ける定数と、代替は以下のとおりです:

   <ul class="simplelist">
    <li><strong><code>PDO::DBLIB_ATTR_CONNECTION_TIMEOUT</code></strong> => <strong><code><a href="class.pdo-dblib.php#pdo-dblib.constants.attr-connection-timeout">Pdo\Dblib::ATTR_CONNECTION_TIMEOUT</a></code></strong></li>
    <li><strong><code>PDO::DBLIB_ATTR_QUERY_TIMEOUT</code></strong> => <strong><code><a href="class.pdo-dblib.php#pdo-dblib.constants.attr-query-timeout">Pdo\Dblib::ATTR_QUERY_TIMEOUT</a></code></strong></li>
    <li><strong><code>PDO::DBLIB_ATTR_STRINGIFY_UNIQUEIDENTIFIER</code></strong> => <strong><code><a href="class.pdo-dblib.php#pdo-dblib.constants.attr-stringify-uniqueidentifier">Pdo\Dblib::ATTR_STRINGIFY_UNIQUEIDENTIFIER</a></code></strong></li>
    <li><strong><code>PDO::DBLIB_ATTR_VERSION</code></strong> => <strong><code><a href="class.pdo-dblib.php#pdo-dblib.constants.attr-version">Pdo\Dblib::ATTR_VERSION</a></code></strong></li>
    <li><strong><code>PDO::DBLIB_ATTR_TDS_VERSION</code></strong> => <strong><code><a href="class.pdo-dblib.php#pdo-dblib.constants.attr-tds-version">Pdo\Dblib::ATTR_TDS_VERSION</a></code></strong></li>
    <li><strong><code>PDO::DBLIB_ATTR_SKIP_EMPTY_ROWSETS</code></strong> => <strong><code><a href="class.pdo-dblib.php#pdo-dblib.constants.attr-skip-empty-rowsets">Pdo\Dblib::ATTR_SKIP_EMPTY_ROWSETS</a></code></strong></li>
    <li><strong><code>PDO::DBLIB_ATTR_DATETIME_CONVERT</code></strong> => <strong><code><a href="class.pdo-dblib.php#pdo-dblib.constants.attr-datetime-convert">Pdo\Dblib::ATTR_DATETIME_CONVERT</a></code></strong></li>
    <li><strong><code><a href="ref.pdo-firebird.php#pdo.constants.fb-attr-date-format">PDO::FB_ATTR_DATE_FORMAT</a></code></strong> => <strong><code><a href="class.pdo-firebird.php#pdo-firebird.constants.attr-date-format">Pdo\Firebird::ATTR_DATE_FORMAT</a></code></strong></li>
    <li><strong><code><a href="ref.pdo-firebird.php#pdo.constants.fb-attr-time-format">PDO::FB_ATTR_TIME_FORMAT</a></code></strong> => <strong><code><a href="class.pdo-firebird.php#pdo-firebird.constants.attr-time-format">Pdo\Firebird::ATTR_TIME_FORMAT</a></code></strong></li>
    <li><strong><code><a href="ref.pdo-firebird.php#pdo.constants.fb-attr-timestamp-format">PDO::FB_ATTR_TIMESTAMP_FORMAT</a></code></strong> => <strong><code><a href="class.pdo-firebird.php#pdo-firebird.constants.attr-timestamp-format">Pdo\Firebird::ATTR_TIMESTAMP_FORMAT</a></code></strong></li>
    <li><strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-use-buffered-query">PDO::MYSQL_ATTR_USE_BUFFERED_QUERY</a></code></strong> => <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-use-buffered-query">Pdo\Mysql::ATTR_USE_BUFFERED_QUERY</a></code></strong></li>
    <li><strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-local-infile">PDO::MYSQL_ATTR_LOCAL_INFILE</a></code></strong> => <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-local-infile">Pdo\Mysql::ATTR_LOCAL_INFILE</a></code></strong></li>
    <li><strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-local-infile-directory">PDO::MYSQL_ATTR_LOCAL_INFILE_DIRECTORY</a></code></strong> => <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-local-infile-directory">Pdo\Mysql::ATTR_LOCAL_INFILE_DIRECTORY</a></code></strong></li>
    <li><strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-init-command">PDO::MYSQL_ATTR_INIT_COMMAND</a></code></strong> => <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-init-command">Pdo\Mysql::ATTR_INIT_COMMAND</a></code></strong></li>
    <li><strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-max-buffer-size">PDO::MYSQL_ATTR_MAX_BUFFER_SIZE</a></code></strong> => <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-max-buffer-size">Pdo\Mysql::ATTR_MAX_BUFFER_SIZE</a></code></strong></li>
    <li><strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-read-default-file">PDO::MYSQL_ATTR_READ_DEFAULT_FILE</a></code></strong> => <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-read-default-file">Pdo\Mysql::ATTR_READ_DEFAULT_FILE</a></code></strong></li>
    <li><strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-read-default-group">PDO::MYSQL_ATTR_READ_DEFAULT_GROUP</a></code></strong> => <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-read-default-group">Pdo\Mysql::ATTR_READ_DEFAULT_GROUP</a></code></strong></li>
    <li><strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-compress">PDO::MYSQL_ATTR_COMPRESS</a></code></strong> => <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-compress">Pdo\Mysql::ATTR_COMPRESS</a></code></strong></li>
    <li><strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-direct-query">PDO::MYSQL_ATTR_DIRECT_QUERY</a></code></strong> => <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-direct-query">Pdo\Mysql::ATTR_DIRECT_QUERY</a></code></strong></li>
    <li><strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-found-rows">PDO::MYSQL_ATTR_FOUND_ROWS</a></code></strong> => <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-found-rows">Pdo\Mysql::ATTR_FOUND_ROWS</a></code></strong></li>
    <li><strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-ignore-space">PDO::MYSQL_ATTR_IGNORE_SPACE</a></code></strong> => <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-ignore-space">Pdo\Mysql::ATTR_IGNORE_SPACE</a></code></strong></li>
    <li><strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-ssl-key">PDO::MYSQL_ATTR_SSL_KEY</a></code></strong> => <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-ssl-key">Pdo\Mysql::ATTR_SSL_KEY</a></code></strong></li>
    <li><strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-ssl-cert">PDO::MYSQL_ATTR_SSL_CERT</a></code></strong> => <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-ssl-cert">Pdo\Mysql::ATTR_SSL_CERT</a></code></strong></li>
    <li><strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-ssl-ca">PDO::MYSQL_ATTR_SSL_CA</a></code></strong> => <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-ssl-ca">Pdo\Mysql::ATTR_SSL_CA</a></code></strong></li>
    <li><strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-ssl-capath">PDO::MYSQL_ATTR_SSL_CAPATH</a></code></strong> => <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-ssl-capath">Pdo\Mysql::ATTR_SSL_CAPATH</a></code></strong></li>
    <li><strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-ssl-cipher">PDO::MYSQL_ATTR_SSL_CIPHER</a></code></strong> => <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-ssl-cipher">Pdo\Mysql::ATTR_SSL_CIPHER</a></code></strong></li>
    <li><strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-ssl-verify-server-cert">PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT</a></code></strong> => <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-ssl-verify-server-cert">Pdo\Mysql::ATTR_SSL_VERIFY_SERVER_CERT</a></code></strong></li>
    <li><strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-server-public-key">PDO::MYSQL_ATTR_SERVER_PUBLIC_KEY</a></code></strong> => <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-server-public-key">Pdo\Mysql::ATTR_SERVER_PUBLIC_KEY</a></code></strong></li>
    <li><strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-multi-statements">PDO::MYSQL_ATTR_MULTI_STATEMENTS</a></code></strong> => <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-multi-statements">Pdo\Mysql::ATTR_MULTI_STATEMENTS</a></code></strong></li>
    <li><strong><code><a href="ref.pdo-odbc.php#pdo.constants.odbc-attr-use-cursor-library">PDO::ODBC_ATTR_USE_CURSOR_LIBRARY</a></code></strong> => <strong><code><a href="class.pdo-odbc.php#pdo-odbc.constants.attr-use-cursor-library">Pdo\Odbc::ATTR_USE_CURSOR_LIBRARY</a></code></strong></li>
    <li><strong><code><a href="ref.pdo-odbc.php#pdo.constants.odbc-attr-assume-utf8">PDO::ODBC_ATTR_ASSUME_UTF8</a></code></strong> => <strong><code><a href="class.pdo-odbc.php#pdo-odbc.constants.attr-assume-utf8">Pdo\Odbc::ATTR_ASSUME_UTF8</a></code></strong></li>
    <li><strong><code><a href="ref.pdo-odbc.php#pdo.constants.odbc-sql-use-if-needed">PDO::ODBC_SQL_USE_IF_NEEDED</a></code></strong> => <strong><code><a href="class.pdo-odbc.php#pdo-odbc.constants.sql-use-if-needed">Pdo\Odbc::SQL_USE_IF_NEEDED</a></code></strong></li>
    <li><strong><code><a href="ref.pdo-odbc.php#pdo.constants.odbc-sql-use-driver">PDO::ODBC_SQL_USE_DRIVER</a></code></strong> => <strong><code><a href="class.pdo-odbc.php#pdo-odbc.constants.sql-use-driver">Pdo\Odbc::SQL_USE_DRIVER</a></code></strong></li>
    <li><strong><code><a href="ref.pdo-odbc.php#pdo.constants.odbc-sql-use-odbc">PDO::ODBC_SQL_USE_ODBC</a></code></strong> => <strong><code><a href="class.pdo-odbc.php#pdo-odbc.constants.sql-use-odbc">Pdo\Odbc::SQL_USE_ODBC</a></code></strong></li>
    <li><strong><code><a href="ref.pdo-pgsql.php#pdo.constants.pgsql-attr-disable-prepares">PDO::PGSQL_ATTR_DISABLE_PREPARES</a></code></strong> => <strong><code><a href="class.pdo-pgsql.php#pdo-pgsql.constants.attr-disable-prepares">Pdo\Pgsql::ATTR_DISABLE_PREPARES</a></code></strong></li>
    <li><strong><code>PDO::SQLITE_ATTR_EXTENDED_RESULT_CODES</code></strong> => <strong><code><a href="class.pdo-sqlite.php#pdo-sqlite.constants.attr-extended-result-codes">Pdo\Sqlite::ATTR_EXTENDED_RESULT_CODES</a></code></strong></li>
    <li><strong><code>PDO::SQLITE_ATTR_OPEN_FLAGS</code></strong> => <strong><code>Pdo\Sqlite::OPEN_FLAGS</code></strong></li>
    <li><strong><code>PDO::SQLITE_ATTR_READONLY_STATEMENT</code></strong> => <strong><code><a href="class.pdo-sqlite.php#pdo-sqlite.constants.attr-readonly-statement">Pdo\Sqlite::ATTR_READONLY_STATEMENT</a></code></strong></li>
    <li><strong><code><a href="pdo.constants.php#pdo.constants.sqlite-deterministic">PDO::SQLITE_DETERMINISTIC</a></code></strong> => <strong><code><a href="class.pdo-sqlite.php#pdo-sqlite.constants.deterministic">Pdo\Sqlite::DETERMINISTIC</a></code></strong></li>
    <li><strong><code>PDO::SQLITE_OPEN_READONLY</code></strong> => <strong><code><a href="class.pdo-sqlite.php#pdo-sqlite.constants.open-readonly">Pdo\Sqlite::OPEN_READONLY</a></code></strong></li>
    <li><strong><code>PDO::SQLITE_OPEN_READWRITE</code></strong> => <strong><code><a href="class.pdo-sqlite.php#pdo-sqlite.constants.open-readwrite">Pdo\Sqlite::OPEN_READWRITE</a></code></strong></li>
    <li><strong><code>PDO::SQLITE_OPEN_CREATE</code></strong> => <strong><code><a href="class.pdo-sqlite.php#pdo-sqlite.constants.open-create">Pdo\Sqlite::OPEN_CREATE</a></code></strong></li>
   </ul>
   
  </p>

  <p class="para">
   PDO クラスのドライバ特有のメソッドは、推奨されなくなりました。
   影響を受けるメソッドと、代替は以下のとおりです:

   <ul class="simplelist">
    <li><span class="methodname"><a href="pdo.pgsqlcopyfromarray.php" class="methodname">PDO::pgsqlCopyFromArray()</a></span> => <span class="methodname"><a href="pdo-pgsql.copyfromarray.php" class="methodname">Pdo\Pgsql::copyFromArray()</a></span></li>
    <li><span class="methodname"><a href="pdo.pgsqlcopyfromfile.php" class="methodname">PDO::pgsqlCopyFromFile()</a></span> => <span class="methodname"><a href="pdo-pgsql.copyfromfile.php" class="methodname">Pdo\Pgsql::copyFromFile()</a></span></li>
    <li><span class="methodname"><a href="pdo.pgsqlcopytoarray.php" class="methodname">PDO::pgsqlCopyToArray()</a></span> => <span class="methodname"><a href="pdo-pgsql.copytoarray.php" class="methodname">Pdo\Pgsql::copyToArray()</a></span></li>
    <li><span class="methodname"><a href="pdo.pgsqlcopytofile.php" class="methodname">PDO::pgsqlCopyToFile()</a></span> => <span class="methodname"><a href="pdo-pgsql.copytofile.php" class="methodname">Pdo\Pgsql::copyToFile()</a></span></li>
    <li><span class="methodname"><a href="pdo.pgsqlgetnotify.php" class="methodname">PDO::pgsqlGetNotify()</a></span> => <span class="methodname"><a href="pdo-pgsql.getnotify.php" class="methodname">Pdo\Pgsql::getNotify()</a></span></li>
    <li><span class="methodname"><a href="pdo.pgsqlgetpid.php" class="methodname">PDO::pgsqlGetPid()</a></span> => <span class="methodname"><a href="pdo-pgsql.getpid.php" class="methodname">Pdo\Pgsql::getPid()</a></span></li>
    <li><span class="methodname"><a href="pdo.pgsqllobcreate.php" class="methodname">PDO::pgsqlLOBCreate()</a></span> => <span class="methodname"><a href="pdo-pgsql.lobcreate.php" class="methodname">Pdo\Pgsql::lobCreate()</a></span></li>
    <li><span class="methodname"><a href="pdo.pgsqllobopen.php" class="methodname">PDO::pgsqlLOBOpen()</a></span> => <span class="methodname"><a href="pdo-pgsql.lobopen.php" class="methodname">Pdo\Pgsql::lobOpen()</a></span></li>
    <li><span class="methodname"><a href="pdo.pgsqllobunlink.php" class="methodname">PDO::pgsqlLOBUnlink()</a></span> => <span class="methodname"><a href="pdo-pgsql.lobunlink.php" class="methodname">Pdo\Pgsql::lobUnlink()</a></span></li>
    <li><span class="methodname"><a href="pdo.sqlitecreateaggregate.php" class="methodname">PDO::sqliteCreateAggregate()</a></span> => <span class="methodname"><a href="pdo-sqlite.createaggregate.php" class="methodname">Pdo\Sqlite::createAggregate()</a></span></li>
    <li><span class="methodname"><a href="pdo.sqlitecreatecollation.php" class="methodname">PDO::sqliteCreateCollation()</a></span> => <span class="methodname"><a href="pdo-sqlite.createcollation.php" class="methodname">Pdo\Sqlite::createCollation()</a></span></li>
    <li><span class="methodname"><a href="pdo.sqlitecreatefunction.php" class="methodname">PDO::sqliteCreateFunction()</a></span> => <span class="methodname"><a href="pdo-sqlite.createfunction.php" class="methodname">Pdo\Sqlite::createFunction()</a></span></li>
   </ul>
   
  </p>

 </div>

 <div class="sect2" id="migration85.deprecated.pdo-pgsql">
  <h3 class="title">PDO_PGSQL</h3>

  <p class="para">
   トランザクションの状態に関連する以下の定数は、推奨されなくなりました。
   この機能は PDO で利用できなくなっているからです:

   <ul class="simplelist">
    <li><strong><code>PDO::PGSQL_TRANSACTION_IDLE</code></strong></li>
    <li><strong><code>PDO::PGSQL_TRANSACTION_ACTIVE</code></strong></li>
    <li><strong><code>PDO::PGSQL_TRANSACTION_INTRANS</code></strong></li>
    <li><strong><code>PDO::PGSQL_TRANSACTION_INERROR</code></strong></li>
    <li><strong><code>PDO::PGSQL_TRANSACTION_UNKNOWN</code></strong></li>
   </ul>
   
  </p>

 </div>

 <div class="sect2" id="migration85.deprecated.reflection">
  <h3 class="title">Reflection</h3>

  <p class="simpara">
   リフレクション関連の様々な <code class="code">setAccessible()</code> メソッドは、
   推奨されなくなりました。
   使っても効果がないためです。
   
  </p>

  <p class="simpara">
   存在しない定数に対して、
   <span class="methodname"><a href="reflectionclass.getconstant.php" class="methodname">ReflectionClass::getConstant()</a></span> 
   をコールすることは、推奨されなくなりました。
   
  </p>

  <p class="simpara">
   デフォルト値が存在しないプロパティに対して、
   <span class="methodname"><a href="reflectionproperty.getdefaultvalue.php" class="methodname">ReflectionProperty::getDefaultValue()</a></span>
   をコールすることは、推奨されなくなりました。
   
  </p>

 </div>

 <div class="sect2" id="migration85.deprecated.spl">
  <h3 class="title">SPL</h3>

  <p class="simpara">
   <span class="function"><a href="function.spl-autoload-call.php" class="function">spl_autoload_call()</a></span> を
   <span class="function"><a href="function.spl-autoload-unregister.php" class="function">spl_autoload_unregister()</a></span>
   のコールバック引数に渡すことで、
   すべての autoload の登録を解除することは、推奨されなくなりました。
   代わりに、<span class="function"><a href="function.spl-autoload-functions.php" class="function">spl_autoload_functions()</a></span>
   の戻り値を反復処理し、
   それぞれの値に対して <span class="function"><a href="function.spl-autoload-unregister.php" class="function">spl_autoload_unregister()</a></span> 
   をコールする必要があります。
   
  </p>

  <p class="simpara">
   <span class="methodname"><a href="splobjectstorage.contains.php" class="methodname">SplObjectStorage::contains()</a></span>,
   <span class="methodname"><a href="splobjectstorage.attach.php" class="methodname">SplObjectStorage::attach()</a></span>,
   <span class="methodname"><a href="splobjectstorage.detach.php" class="methodname">SplObjectStorage::detach()</a></span>
   は、推奨されなくなりました。
   <span class="methodname"><a href="splobjectstorage.offsetexists.php" class="methodname">SplObjectStorage::offsetExists()</a></span>,
   <span class="methodname"><a href="splobjectstorage.offsetset.php" class="methodname">SplObjectStorage::offsetSet()</a></span>,
   <span class="methodname"><a href="splobjectstorage.offsetunset.php" class="methodname">SplObjectStorage::offsetUnset()</a></span>
   をそれぞれ使ってください。
   
  </p>

  <p class="simpara">
   オブジェクトと一緒に
   <span class="classname"><a href="class.arrayobject.php" class="classname">ArrayObject</a></span> と
   <span class="classname"><a href="class.arrayiterator.php" class="classname">ArrayIterator</a></span> を使うことは、
   推奨されなくなりました。
   
  </p>

 </div>

 <div class="sect2" id="migration85.deprecated.standard">
  <h3 class="title">Standard</h3>

  <p class="simpara">
   エイリアスとして定義されている
   <span class="function"><a href="function.socket-set-timeout.php" class="function">socket_set_timeout()</a></span> 関数は、
   推奨されなくなりました。
   代わりに <span class="function"><a href="function.stream-set-timeout.php" class="function">stream_set_timeout()</a></span> を使いましょう。
   
  </p>

  <p class="simpara">
   最後にオープンしたディレクトリを使う目的で、
   <span class="function"><a href="function.readdir.php" class="function">readdir()</a></span>,
   <span class="function"><a href="function.rewinddir.php" class="function">rewinddir()</a></span>,
   <span class="function"><a href="function.closedir.php" class="function">closedir()</a></span> に <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> を渡すことは、
   推奨されなくなりました。
   最後にオープンしたディレクトリを明示的に指定してください。
   
  </p>

  <p class="simpara">
   <span class="function"><a href="function.chr.php" class="function">chr()</a></span> に、
   区間 <code class="literal">[0, 255]</code> の範囲にない数値を指定することは、
   推奨されなくなりました。
   1バイトのデータは、この範囲でのみ保持できるからです。
   
  </p>

  <p class="simpara">
   シングルバイトでない文字列を <span class="function"><a href="function.ord.php" class="function">ord()</a></span> に渡すことは、
   推奨されなくなりました。
   こうすることは、バグであることを示唆しています。
   
  </p>

  <p class="simpara">
   ローカルで事前に定義済みの変数
   <a href="reserved.variables.httpresponseheader.php" class="link">$http_response_header</a>
   は、推奨されなくなりました。代わりに、
   <span class="function"><a href="function.http-get-last-response-headers.php" class="function">http_get_last_response_headers()</a></span> をコールすべきです。
   
  </p>

 </div>

 <div class="sect2" id="migration85.deprecated.xml">
  <h3 class="title">XML</h3>

  <p class="simpara">
   <span class="function"><a href="function.xml-parser-free.php" class="function">xml_parser_free()</a></span> 関数は、推奨されなくなりました。
   <span class="classname"><a href="class.xmlparser.php" class="classname">XMLParser</a></span> オブジェクトが、
   自動でリソースを開放するためです。
   
  </p>

 </div>

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