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

contributors($setup);

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

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

  <div class="sect3" id="migration84.deprecated.core.implicitly-nullable-parameter">
   
   <h4 class="title">暗黙的な nullable パラメータ</h4>

   <p class="simpara">
    パラメータのデフォルト値が <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> の場合、
    その型は暗黙的に <span class="type"><a href="language.types.null.php" class="type null">null</a></span> を受け入れるように拡張されます。
   </p>

   <p class="para">
    次のコードは:
    <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">foo</span><span style="color: #007700">(</span><span style="color: #0000BB">T1 $a </span><span style="color: #007700">= </span><span style="color: #0000BB">null</span><span style="color: #007700">) {}</span></span></code></div>
     </div>

    </div>
    このように:
    <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">foo</span><span style="color: #007700">(</span><span style="color: #0000BB">T1</span><span style="color: #007700">|</span><span style="color: #0000BB">null $a </span><span style="color: #007700">= </span><span style="color: #0000BB">null</span><span style="color: #007700">) {}</span></span></code></div>
     </div>

    </div>
    またはこのように修正する必要があります。
    <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">foo</span><span style="color: #007700">(?</span><span style="color: #0000BB">T1 $a </span><span style="color: #007700">= </span><span style="color: #0000BB">null</span><span style="color: #007700">) {}</span></span></code></div>
     </div>

    </div>
   </p>

   <p class="para">
    しかし、そのようなパラメータ宣言の後に必須パラメータが続く場合:
    <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">foo</span><span style="color: #007700">(</span><span style="color: #0000BB">T1 $a</span><span style="color: #007700">, </span><span style="color: #0000BB">T2 $b </span><span style="color: #007700">= </span><span style="color: #0000BB">null</span><span style="color: #007700">, </span><span style="color: #0000BB">T3 $c</span><span style="color: #007700">) {}</span></span></code></div>
     </div>

    </div>
    このように:
    <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">foo</span><span style="color: #007700">(</span><span style="color: #0000BB">T1 $a</span><span style="color: #007700">, </span><span style="color: #0000BB">T2</span><span style="color: #007700">|</span><span style="color: #0000BB">null $b</span><span style="color: #007700">, </span><span style="color: #0000BB">T3 $c</span><span style="color: #007700">) {}</span></span></code></div>
     </div>

    </div>
    またはこのように修正する必要があります。
    <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">foo</span><span style="color: #007700">(</span><span style="color: #0000BB">T1 $a</span><span style="color: #007700">, ?</span><span style="color: #0000BB">T2 $b</span><span style="color: #007700">, </span><span style="color: #0000BB">T3 $c</span><span style="color: #007700">) {}</span></span></code></div>
     </div>

    </div>
    なぜなら、必須パラメータの前に任意パラメータを置くことは非推奨だからです。
   </p>
  </div>

  <div class="sect3">
   
   <h4 class="title">ゼロを負の数でべき乗</h4>

   <p class="simpara">
    ある数の負のべき乗は、
    その数の正のべき乗の逆数と同等です。
    例えば、<code class="literal">10<sup class="superscript">-2</sup></code> は
    <code class="literal">1 / 10<sup class="superscript">2</sup></code> と同等です。
    つまり、<code class="literal">0</code>の負のべき乗は
    <code class="literal">0</code> で割ることを意味します。例えば、
    <code class="literal">0<sup class="superscript">-2</sup></code> は
    <code class="literal">1 / 0<sup class="superscript">2</sup></code>、または
    <code class="literal">1 / 0</code> となります。以上より、この動作は非推奨とされました。
   </p>

   <p class="simpara">
    これはべき乗演算子 <code class="literal">**</code> と
    <span class="function"><a href="function.pow.php" class="function">pow()</a></span> 関数に影響します。
   </p>

   <p class="simpara">
    IEEE 754 のセマンティクスが必要な場合は、新しい
    <span class="function"><a href="function.fpow.php" class="function">fpow()</a></span> 関数を使用してください。
   </p>
  </div>

  <div class="sect3" id="migration84.deprecated.core.underscore-class-name">
   
   <h4 class="title">クラス名をアンダースコア <code class="literal">_</code> とする</h4>

   <p class="para">
    クラス名を <code class="literal">_</code> とすることは、現在非推奨となっています:
    <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">_ </span><span style="color: #007700">{}</span></span></code></div>
     </div>

    </div>
   </p>

   <blockquote class="note"><p><strong class="note">注意</strong>: 
    <p class="para">
     クラス名がアンダースコアで始まるのは、
     非推奨では<em>ありません</em>:
     <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">_MyClass </span><span style="color: #007700">{}</span></span></code></div>
      </div>

     </div>
    </p>
   </p></blockquote>
  </div>

  <div class="sect3">
   
   <h4 class="title">
    <span class="function"><a href="function.trigger-error.php" class="function">trigger_error()</a></span> で
    <strong><code><a href="errorfunc.constants.php#constant.e-user-error">E_USER_ERROR</a></code></strong> を使用
   </h4>

   <p class="simpara">
    <span class="function"><a href="function.trigger-error.php" class="function">trigger_error()</a></span> で
    <code class="parameter">error_level</code> として
    <strong><code><a href="errorfunc.constants.php#constant.e-user-error">E_USER_ERROR</a></code></strong> を指定するのは非推奨となりました。
   </p>

   <p class="simpara">
    そのような場合、例外をスローするか、
    <span class="function"><a href="function.exit.php" class="function">exit()</a></span> を呼び出すように修正すべきです。
   </p>
  </div>

  <div class="sect3">
   
   <h4 class="title">
    <strong><code><a href="errorfunc.constants.php#constant.e-strict">E_STRICT</a></code></strong> 定数
   </h4>

   <p class="simpara">
    <strong><code><a href="errorfunc.constants.php#constant.e-strict">E_STRICT</a></code></strong> エラーレベルが削除されたため、
    この定数は非推奨となりました。
   </p>
  </div>
 </div>

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

  <p class="simpara">
   <strong><code><a href="curl.constants.php#constant.curlopt-binarytransfer">CURLOPT_BINARYTRANSFER</a></code></strong> 定数は非推奨となりました。
  </p>
 </div>

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

  <p class="simpara">
   <code class="code"> DatePeriod::__construct(string $isostr, int $options = 0)</code> の
   シグネチャは非推奨となりました。
   代わりに <span class="methodname"><a href="dateperiod.createfromiso8601string.php" class="methodname">DatePeriod::createFromISO8601String()</a></span> を使用してください。
  </p>

  
  <p class="simpara">
   <strong><code><a href="datetime.constants.php#constant.sunfuncs-ret-timestamp">SUNFUNCS_RET_TIMESTAMP</a></code></strong>、
   <strong><code><a href="datetime.constants.php#constant.sunfuncs-ret-string">SUNFUNCS_RET_STRING</a></code></strong>、
   および <strong><code><a href="datetime.constants.php#constant.sunfuncs-ret-double">SUNFUNCS_RET_DOUBLE</a></code></strong> 定数は非推奨となりました。
   これは PHP 8.1.0 で <span class="function"><a href="function.date-sunset.php" class="function">date_sunset()</a></span> と
   <span class="function"><a href="function.date-sunrise.php" class="function">date_sunrise()</a></span> 関数が非推奨となったことに伴うものです。
  </p>
 </div>

 <div class="sect2" id="migration84.deprecated.core.dba">
  <h3 class="title">DBA</h3>

  
  <p class="simpara">
   <span class="function"><a href="function.dba-key-split.php" class="function">dba_key_split()</a></span> に <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> または <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> を渡すことは
   非推奨となりました。
   これらの場合、常に <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> を返していました。
  </p>
 </div>

 <div class="sect2" id="migration84.deprecated.core.dom">
  <h3 class="title">DOM</h3>

  
  <p class="simpara">
   <strong><code><a href="dom.constants.php#constant.dom-php-err">DOM_PHP_ERR</a></code></strong> 定数は非推奨となりました。
  </p>

  
  <p class="para">
   以下のプロパティは正式に非推奨となりました:
   <ul class="simplelist">
    <li><span class="property"><a href="class.domdocument.php#domdocument.props.actualencoding">DOMDocument::$actualEncoding</a></span></li>
    <li><span class="property"><a href="class.domdocument.php#domdocument.props.config">DOMDocument::$config</a></span></li>
    <li><span class="property"><a href="class.domentity.php#domentity.props.actualencoding">DOMEntity::$actualEncoding</a></span></li>
    <li><span class="property"><a href="class.domentity.php#domentity.props.encoding">DOMEntity::$encoding</a></span></li>
    <li><span class="property"><a href="class.domentity.php#domentity.props.version">DOMEntity::$version</a></span></li>
   </ul>
  </p>
 </div>

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

  
  <p class="simpara">
   ハッシュ関数に無効なオプションを渡すことは非推奨となりました。
  </p>
 </div>

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

  <p class="simpara">
   <span class="function"><strong>intlcal_set()</strong></span> または
   <span class="methodname"><a href="intlcalendar.set.php" class="methodname">IntlCalendar::set()</a></span>
   を 2 つを超える引数で呼び出すことは非推奨となりました。
   代わりに <span class="methodname"><a href="intlcalendar.setdate.php" class="methodname">IntlCalendar::setDate()</a></span> または
   <span class="methodname"><a href="intlcalendar.setdatetime.php" class="methodname">IntlCalendar::setDateTime()</a></span> を使用してください。
  </p>

  <p class="simpara">
   <span class="function"><strong>intlgregcal_create_instance()</strong></span> または
   <span class="methodname"><a href="intlgregoriancalendar.construct.php" class="methodname">IntlGregorianCalendar::__construct()</a></span>
   を 2 つを超える引数で呼び出すことは非推奨となりました。
   代わりに <span class="methodname"><a href="intlgregoriancalendar.createfromdate.php" class="methodname">IntlGregorianCalendar::createFromDate()</a></span> または
   <span class="methodname"><a href="intlgregoriancalendar.createfromdatetime.php" class="methodname">IntlGregorianCalendar::createFromDateTime()</a></span> を使用してください。
  </p>
 </div>

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

  <p class="simpara">
   <span class="function"><a href="function.ldap-connect.php" class="function">ldap_connect()</a></span> を
   2 つを超える引数で呼び出すことは非推奨となりました。
   代わりに <span class="function"><a href="function.ldap-connect-wallet.php" class="function">ldap_connect_wallet()</a></span> を使用してください。
  </p>

  <p class="simpara">
   <span class="function"><a href="function.ldap-exop.php" class="function">ldap_exop()</a></span>
   を 4 つを超える引数で呼び出すことは非推奨となりました。
   代わりに <span class="function"><a href="function.ldap-exop-sync.php" class="function">ldap_exop_sync()</a></span> を使用してください。
  </p>
 </div>

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

  
  <p class="simpara">
   <span class="function"><a href="mysqli.ping.php" class="function">mysqli_ping()</a></span> 関数および
   <span class="methodname"><a href="mysqli.ping.php" class="methodname">mysqli::ping()</a></span> メソッドは、
   PHP 8.2.0 で再接続機能が削除されたため、非推奨となりました。
  </p>

  
  <p class="simpara">
   <span class="function"><a href="mysqli.kill.php" class="function">mysqli_kill()</a></span> 関数および
   <span class="methodname"><a href="mysqli.kill.php" class="methodname">mysqli::kill()</a></span> メソッド
   は非推奨となりました。
   この機能が必要な場合は、代わりに SQL の <code class="literal">KILL</code>
   コマンドを使用できます。
  </p>

  
  <p class="simpara">
   <span class="function"><a href="mysqli.refresh.php" class="function">mysqli_refresh()</a></span> 関数および
   <span class="methodname"><a href="mysqli.refresh.php" class="methodname">mysqli::refresh()</a></span> メソッドは
   非推奨となりました。
   この機能が必要な場合は、代わりに SQL の <code class="literal">FLUSH</code> コマンド
   を使用できます。
   すべての <strong><code><a href="mysqli.constants.php#constant.mysqli-refresh-grant">MYSQLI_REFRESH_<span class="replaceable">*</span></a></code></strong>
   定数も非推奨となりました。
  </p>

  
  <p class="simpara">
   <span class="function"><a href="mysqli.store-result.php" class="function">mysqli_store_result()</a></span> に
   <code class="parameter">mode</code> パラメータを明示的に渡すことは非推奨となりました。
   この関数のために用意されていた<strong><code>MYSQLI_STORE_RESULT_COPY_DATA</code></strong> 定数も
   非推奨となりました。
  </p>
 </div>

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

  <p class="simpara">
   ドル記号で囲まれた文字列の中で
   エスケープされた疑問符（<code class="literal">??</code>）を使用することは非推奨となりました。
   PDO_PGSQL はドル記号で囲まれた文字列をサポートする独自の SQL パーサーを持つようになったため、
   それらの中で疑問符をエスケープする必要はなくなりました。
  </p>
 </div>

 <div class="sect2" id="migration84.deprecated.core.pgsql">
  <h3 class="title">PGSQL</h3>

  <p class="simpara">
   <span class="function"><a href="function.pg-fetch-result.php" class="function">pg_fetch_result()</a></span>、
   <span class="function"><a href="function.pg-field-prtlen.php" class="function">pg_field_prtlen()</a></span>、
   および <span class="function"><a href="function.pg-field-is-null.php" class="function">pg_field_is_null()</a></span> の 2 引数のシグネチャは非推奨となりました。
   代わりに <code class="parameter">row</code> を <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> に設定した 3 引数のシグネチャを
   使用してください。
  </p>
 </div>

 <div class="sect2" id="migration84.deprecated.random">
  <h3 class="title">Random</h3>

  
  <p class="simpara">
   <span class="function"><a href="function.lcg-value.php" class="function">lcg_value()</a></span> は非推奨となりました。
   この関数は複数の点で問題があるためです。
   代わりに <span class="methodname"><a href="random-randomizer.getfloat.php" class="methodname">Random\Randomizer::getFloat()</a></span> を使用してください。
  </p>
 </div>

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

  <p class="simpara">
   <span class="methodname"><a href="reflectionmethod.construct.php" class="methodname">ReflectionMethod::__construct()</a></span> を
   1 つの引数で呼び出すことは非推奨となりました。
   代わりに <span class="methodname"><a href="reflectionmethod.createfrommethodname.php" class="methodname">ReflectionMethod::createFromMethodName()</a></span> を使用してください。
  </p>
 </div>

 <div class="sect2" id="migration84.deprecated.session">
  <h3 class="title">Session</h3>

  <p class="simpara">
   <span class="function"><a href="function.session-set-save-handler.php" class="function">session_set_save_handler()</a></span> を
   2 つを超える引数で呼び出すことは非推奨となりました。
   2 引数のシグネチャを使用してください。
  </p>

  
  <p class="simpara">
   <a href="session.configuration.php#ini.session.sid-length" class="link"><code class="literal">session.sid_length</code></a> および
   <a href="session.configuration.php#ini.session.sid-bits-per-character" class="link"><code class="literal">session.sid_bits_per_character</code></a>
   の INI 設定値を変更することは非推奨となりました。
   セッションストレージバックエンドを修正し、 16 進数 32 文字による
   セッション ID を受け入れるようにし、これら 2 つの INI 設定を変更するのをやめてください。
  </p>

  
  <p class="simpara">
   <a href="session.configuration.php#ini.session.use-only-cookies" class="link"><code class="literal">session.use_only_cookies</code></a>、
   <a href="session.configuration.php#ini.session.use-trans-sid" class="link"><code class="literal">session.use_trans_sid</code></a>、
   <a href="session.configuration.php#ini.session.trans-sid-tags" class="link"><code class="literal">session.trans_sid_tags</code></a>、
   <a href="session.configuration.php#ini.session.trans-sid-hosts" class="link"><code class="literal">session.trans_sid_hosts</code></a>、および
   <a href="session.configuration.php#ini.session.referer-check" class="link"><code class="literal">session.referer_check</code></a>
   の INI 設定値を変更することは非推奨となりました。
   <strong><code><a href="session.constants.php#constant.sid">SID</a></code></strong> 定数も非推奨となりました。
  </p>
 </div>

 <div class="sect2" id="migration84.deprecated.core.soap">
  <h3 class="title">SOAP</h3>

  
  <p class="simpara">
   <span class="methodname"><a href="soapserver.addfunction.php" class="methodname">SoapServer::addFunction()</a></span> に
   <span class="type"><a href="language.types.integer.php" class="type int">int</a></span> を渡すことは非推奨となりました。
   すべての PHP 関数を提供する必要がある場合は、
   <span class="function"><a href="function.get-defined-functions.php" class="function">get_defined_functions()</a></span> が返す配列をフラット化してください。
  </p>

  
  <p class="simpara">
   <strong><code><a href="soap.constants.php#constant.soap-functions-all">SOAP_FUNCTIONS_ALL</a></code></strong> 定数は非推奨となりました。
  </p>
 </div>

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

  <p class="simpara">
   <span class="methodname"><a href="splfixedarray.wakeup.php" class="methodname">SplFixedArray::__wakeup()</a></span> メソッドは
   非推奨となりました。代わりに
   <span class="methodname"><a href="splfixedarray.serialize.php" class="methodname">SplFixedArray::__serialize()</a></span> と
   <span class="methodname"><a href="splfixedarray.unserialize.php" class="methodname">SplFixedArray::__unserialize()</a></span>
   をオーバーライドしてください。
  </p>

  
  <p class="simpara">
   <span class="methodname"><a href="splfileobject.setcsvcontrol.php" class="methodname">SplFileObject::setCsvControl()</a></span>、
   <span class="methodname"><a href="splfileobject.fputcsv.php" class="methodname">SplFileObject::fputcsv()</a></span>、および
   <span class="methodname"><a href="splfileobject.fgetcsv.php" class="methodname">SplFileObject::fgetcsv()</a></span> で
   <code class="parameter">escape</code> パラメータのデフォルト値を利用することは非推奨となりました。
   
   引数または名前付き引数で明示的に指定する必要があります。
   これは、<span class="methodname"><a href="splfileobject.setcsvcontrol.php" class="methodname">SplFileObject::setCsvControl()</a></span> で
   新しいデフォルト値を設定した場合、<span class="methodname"><a href="splfileobject.fputcsv.php" class="methodname">SplFileObject::fputcsv()</a></span> および
   <span class="methodname"><a href="splfileobject.fgetcsv.php" class="methodname">SplFileObject::fgetcsv()</a></span> には適用されません。
  </p>
 </div>

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

  <p class="simpara">
   <span class="function"><a href="function.stream-context-set-option.php" class="function">stream_context_set_option()</a></span> を
   2 つの引数で呼び出すことは非推奨となりました。
   代わりに <span class="function"><a href="function.stream-context-set-options.php" class="function">stream_context_set_options()</a></span> を使用してください。
  </p>

  
  <p class="simpara">
   <span class="function"><a href="function.unserialize.php" class="function">unserialize()</a></span> で大文字の <code class="literal">S</code> タグを使用して文字列を
   アンシリアライズすることは非推奨となりました。
  </p>

  
  <p class="simpara">
   <span class="function"><a href="function.fputcsv.php" class="function">fputcsv()</a></span>、
   <span class="function"><a href="function.fgetcsv.php" class="function">fgetcsv()</a></span>、および
   <span class="function"><a href="function.str-getcsv.php" class="function">str_getcsv()</a></span> の
   <code class="parameter">escape</code> パラメータのデフォルト値を利用することは非推奨となりました。
   
   引数または名前付き引数で明示的に指定する必要があります。
  </p>
 </div>

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

  
  <p class="simpara">
   <span class="function"><a href="function.xml-set-object.php" class="function">xml_set_object()</a></span> 関数は非推奨となりました。
  </p>

  
  <p class="simpara">
   <span class="type"><a href="language.types.callable.php" class="type callable">callable</a></span> でない文字列を
   <span class="function">xml_set_<span class="replaceable">*</span></span>
   関数に渡すことは非推奨となりました。
  </p>
 </div>

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