<?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.incompatible.php',
    1 => '下位互換性のない変更点',
    2 => '下位互換性のない変更点',
  ),
  'up' => 
  array (
    0 => 'migration85.php',
    1 => 'PHP 8.4.x から PHP 8.5.x への移行',
  ),
  'prev' => 
  array (
    0 => 'migration85.constants.php',
    1 => '新しいグローバル定数',
  ),
  'next' => 
  array (
    0 => 'migration85.deprecated.php',
    1 => 'PHP 8.5.x で推奨されなくなる機能',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ja',
    'path' => 'appendices/migration85/incompatible.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="migration85.incompatible" class="sect1">
 <h2 class="title">下位互換性のない変更点</h2>

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

  <div class="sect3" id="migration85.incompatible.core.array-callable-alias">
   <h4 class="title">クラスの別名に <code class="literal">&quot;array&quot;</code> と <code class="literal">&quot;callable&quot;</code> を使う</h4>

   <p class="simpara">
    <span class="function"><a href="function.class-alias.php" class="function">class_alias()</a></span> では、
    クラスのエイリアス名として、<code class="literal">&quot;array&quot;</code>
    と <code class="literal">&quot;callable&quot;</code> を指定できなくなりました。
   </p>

  </div>

  <div class="sect3" id="migration85.incompatible.core.loosely-comparing-object">
   <h4 class="title">比較できないオブジェクトと == で比較する</h4>

   <p class="simpara">
    比較できないオブジェクト
    (例: 列挙型, <span class="classname"><a href="class.curlhandle.php" class="classname">CurlHandle</a></span>,
    その他の内部クラス) を boolean と比較した場合の振る舞いは、
    以前のバージョンでは一貫性がありませんでした。
    boolean リテラルと <code class="code">$object == true</code>
    のように比較した場合、<code class="code">(bool)$object</code>
    と同じ振る舞いをしていました。
    静的に不明な値と <code class="code">$object == $true</code>
    のように比較した場合、常に <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> を返していました。
    これらの振る舞いが、常に <code class="code">(bool)$object</code>
    に従うように統一されました。
   </p>

  </div>

  <div class="sect3" id="migration85.incompatible.core.gc-collect-cycles">
   <h4 class="title">gc_collect_cycles の戻り値</h4>

   <p class="simpara">
    <span class="function"><a href="function.gc-collect-cycles.php" class="function">gc_collect_cycles()</a></span> の戻り値には、
    間接的に収集されたリソースや文字列が含まれなくなりました。
   </p>

  </div>

  <div class="sect3" id="migration85.incompatible.core.substitute-final-subclasses">
   <h4 class="title">final 指定のサブクラスでの static キーワードの置き換え</h4>

   <p class="simpara">
    final を指定したサブクラスにおける、
    メソッドの戻り値 <span class="type">static</span> は、
    <span class="type">self</span> または具象クラスに置き換えられるようになりました。
   </p>
   
   

  </div>

  <div class="sect3" id="migration85.incompatible.core.tick-handlers">
   <h4 class="title">tick ハンドラ</h4>

   <p class="simpara">
    tick ハンドラは、
    すべてのシャットダウン関数とデストラクタが実行され、
    出力ハンドラがクリーンアップされた後に、
    無効化されるようになりました。
   </p>

  </div>

  <div class="sect3" id="migration85.incompatible.core.trait-binding">
   <h4 class="title">トレイトのバインド</h4>

   <p class="simpara">
    トレイトは、親クラスの前にバインドされるようになりました。
    これは微妙な振る舞いの変更ですが、
    ユーザーの期待により一致するはずです。
    
   </p>

  </div>

  <div class="sect3" id="migration85.incompatible.core.errors-compilation-and-linking">
   <h4 class="title">コンパイル中やクラスのリンク中に発生したエラー</h4>

   <p class="simpara">
    コンパイル中やクラスのリンク中に発生したエラーは、
    常に処理が遅延されるようになりました。
    これらのエラーは、コンパイルまたはクラスのリンク後に処理されます。
    コンパイル中やクラスのリンク中に致命的なエラーが発生した場合、
    遅延させられていたエラーがすぐに処理されます。
    この場合、ユーザー定義のエラーハンドラを呼び出しません。
    
   </p>

  </div>

  <div class="sect3" id="migration85.incompatible.core.exception-by-userdefined-handler">
   <h4 class="title">ユーザー定義のエラーハンドラからスローされた例外</h4>

   <p class="simpara">
    クラスのリンク処理時に、
    ユーザー定義のエラーハンドラからスローされた例外は、
    致命的なエラーに昇格しなくなり、リンクを妨げなくなりました。
    
   </p>

  </div>

  <div class="sect3" id="migration85.incompatible.core.attribute-during-compilation">
   <h4 class="title">コンパイル中のアトリビュート適用エラー</h4>

   <p class="simpara">
    抽象クラス、列挙型、インターフェース、
    またはトレイトに <code class="code">#[\Attribute]</code> を適用すると、
    コンパイル時にエラーが発生します。
    以前のバージョンではアトリビュートを追加できていましたが、
    <span class="methodname"><a href="reflectionattribute.newinstance.php" class="methodname">ReflectionAttribute::newInstance()</a></span>
    がコールされた際に Error がスローされていました。
    新しい <code class="code">#[\DelayedTargetValidation]</code> アトリビュートを使うと、
    このエラーをコンパイル時から実行時に遅延させることができます。
   </p>

  </div>

  <div class="sect3" id="migration85.incompatible.core.disable-ini-setting">
   <h4 class="title">disable_classes INI ディレクティブ</h4>

   <p class="simpara">
    さまざまな PHP エンジンの想定を壊してしまうため、
    <a href="ini.core.php#ini.disable-classes" class="link">disable_classes</a>
    INI ディレティブは削除されました。
    
   </p>

  </div>

  <div class="sect3" id="migration85.incompatible.core.destruct-non-array-values">
   <h4 class="title">配列でない値を分解した場合</h4>

   <p class="simpara">
    配列でない(但し <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> を除く)値を、
    <code class="literal">[]</code> や <span class="function"><a href="function.list.php" class="function">list()</a></span> で分解した場合、
    警告が発生するようになりました。
    
   </p>

  </div>

  <div class="sect3" id="migration85.incompatible.core.warning-related-to-cast">
   <h4 class="title">キャスト関連の警告</h4>

   <p class="simpara">
    浮動小数点数(または浮動小数点数のように見える文字列)
    を int 型にキャストする際、
    それらが int 型として表現できない場合に警告が発生するようになりました。
    これは明示的な int キャストと暗黙的な int キャストの両方に影響します。
    
   </p>

   <p class="simpara">
    NAN を他の型にキャストした場合、警告が発生するようになりました。
    
   </p>

  </div>

 </div>

 <div class="sect2" id="migration85.incompatible.bzip2">
  <h3 class="title">Bzip2</h3>

  <p class="simpara">
   <code class="parameter">$block_size</code> に 1 から 9 の間以外の値を指定した場合、
   <span class="function"><a href="function.bzcompress.php" class="function">bzcompress()</a></span> は <span class="classname"><a href="class.valueerror.php" class="classname">ValueError</a></span>
   をスローするようになりました。
  </p>

  <p class="simpara">
   <code class="parameter">$work_factor</code> に 0 から 250 の間以外の値を指定した場合、
   <span class="function"><a href="function.bzcompress.php" class="function">bzcompress()</a></span> は <span class="classname"><a href="class.valueerror.php" class="classname">ValueError</a></span>
   をスローするようになりました。
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.dom">
  <h3 class="title">DOM</h3>

  <p class="simpara">
   <span class="classname"><a href="class.domnamednodemap.php" class="classname">DOMNamedNodeMap</a></span>,
   <span class="classname"><a href="class.domnodelist.php" class="classname">DOMNodeList</a></span>,
   <span class="classname"><a href="class.dom-namednodemap.php" class="classname">Dom\NamedNodeMap</a></span>,
   <span class="classname"><a href="class.dom-nodelist.php" class="classname">Dom\NodeList</a></span>,
   <span class="classname"><a href="class.dom-htmlcollection.php" class="classname">Dom\HTMLCollection</a></span>,
   <span class="classname"><a href="class.dom-dtdnamednodemap.php" class="classname">Dom\DtdNamedNodeMap</a></span> を clone すると、
   失敗するようになりました。
   この変更で、動作しているオブジェクトが実際に失敗することはありません。
   よって、実際の影響はゼロのはずです。
  </p>

 </div>

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

  <p class="simpara">
   <code class="parameter">$filename</code> に nul バイトが含まれている場合、
   <span class="function"><a href="function.finfo-file.php" class="function">finfo_file()</a></span> と
   <span class="methodname"><a href="finfo.file.php" class="methodname">finfo::file()</a></span> は、
   <span class="exceptionname"><a href="class.typeerror.php" class="exceptionname">TypeError</a></span> ではなく
   <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> をスローするようになりました。
   これにより、スローされるエラーの型が、
   言語の他の動作と一貫性を保つように調整されます。
  </p>

 </div>

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

  <p class="simpara">
   この拡張モジュールは、ICU 57.1 以降が必須になりました。
  </p>

  <p class="simpara">
   クラスが初期化されていなかったり、
   clone が失敗した場合に、
   <span class="methodname"><a href="intldateformatter.settimezone.php" class="methodname">IntlDateFormatter::setTimeZone()</a></span>/<span class="function"><a href="intldateformatter.settimezone.php" class="function">datefmt_set_timezone()</a></span>
   は <span class="exceptionname"><a href="class.intlexception.php" class="exceptionname">IntlException</a></span> をスローするようになりました。
  </p>

  <p class="simpara">
   <span class="classname"><a href="class.locale.php" class="classname">Locale</a></span> クラスの全てのメソッドは、
   ロケールの引数に null バイトが含まれていた場合に
   <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> をスローするようになりました。
  </p>

  <p class="simpara">
   数値形式の文字列の処理に関する
   <strong><code><a href="class.collator.php#collator.constants.sort-regular">Collator::SORT_REGULAR</a></code></strong> の動作が、
   ext/standard の <strong><code><a href="array.constants.php#constant.sort-regular">SORT_REGULAR</a></code></strong>
   の動作と同じになるように調整されました。
  </p>

 </div>

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

  <p class="simpara">
   不正なオプションを渡した場合、
   <span class="function"><a href="function.ldap-get-option.php" class="function">ldap_get_option()</a></span>
   と <span class="function"><a href="function.ldap-set-option.php" class="function">ldap_set_option()</a></span> は
   <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span>
   をスローするようになりました。
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.mbstring">
  <h3 class="title">MBString</h3>

  <p class="simpara">
   Unicode データテーブルが、Unicode 17.0 に更新されました。
  </p>

 </div>

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

  <p class="simpara">
   既に構築済みのオブジェクトに対して、
   mysqli のコンストラクタをコールすることはできなくなりました。
   コールした場合、<span class="exceptionname"><a href="class.error.php" class="exceptionname">Error</a></span> がスローされます。
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.odbc">
  <h3 class="title">ODBC</h3>

  <p class="simpara">
   ODBC は、最低でも ODBC 3.5 の機能が使えると想定するようになりました。
   ODBCVER の定義や、それを制御するビルドシステムフラグは削除されました。
  </p>

  <p class="simpara">
   ODBC は、
   特定のドライバ向けにビルドするためのビルドフラグを(DB2以外に)
   持たなくなり、
   それらのドライバ向けの特別なケースも削除されました。
   Windows 以外の環境では、
   iODBC や unixODBC のようなドライバマネージャの使用を強く推奨します。
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.opcache">
  <h3 class="title">Opcache</h3>

  <p class="simpara">
   Opcache 拡張モジュールは、
   常に PHP バイナリに組み込まれ、ロードされるようになりました。
   <a href="opcache.configuration.php#ini.opcache.enable" class="link">opcache.enable</a>
   と <a href="opcache.configuration.php#ini.opcache.enable-cli" class="link">opcache.enable_cli</a>
   の設定はまだ有効です。
  </p>

  <p class="simpara">
   <strong class="option configure">--enable-opcache</strong>/<strong class="option configure">--disable-opcache</strong>
   configure オプションは削除され、
   ビルドしても <var class="filename">opcache.so</var>
   や <var class="filename">php_opcache.dll</var> はもはや生成されません。
  </p>

  <p class="simpara">
   <code class="literal">zend_extension=opcache.so</code> や
   <code class="literal">zend_extension=php_opcache.dll</code>
   INI 設定を使うと、警告が発生するようになりました。
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.pcntl">
  <h3 class="title">PCNTL</h3>

  <p class="simpara">
   <span class="function"><a href="function.pcntl-exec.php" class="function">pcntl_exec()</a></span> の
   <code class="parameter">$args</code> パラメータのエントリに、
   null バイトが含まれていた場合、
   <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> がスローされるようになりました。
  </p>

  <p class="simpara">
   <span class="function"><a href="function.pcntl-exec.php" class="function">pcntl_exec()</a></span> の
   <code class="parameter">$env_vars</code> パラメータのエントリまたはキーに、
   null バイトが含まれていた場合、
   <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> がスローされるようになりました。
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.pcre">
  <h3 class="title">PCRE</h3>

  <p class="simpara">
   semi-deprecated 扱いになっていた、
   コンパイルオプション PCRE2_EXTRA_ALLOW_LOOKAROUND_BSK
   抜きでビルドされるようになりました。
   
  </p>

 </div>

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

  <p class="simpara">
   <strong><code><a href="pdo.constants.fetch-modes.php#pdo.constants.fetch-class">PDO::FETCH_CLASS</a></code></strong>
   と組み合わせて設定されるコンストラクタ引数は、
   通常の CUFA (<span class="function"><a href="function.call-user-func-array.php" class="function">call_user_func_array()</a></span>)
   の規約に従うようになりました。
   つまり、文字列のキーは名前付き引数のように振る舞うということです。
   さらに、リファレンス渡しのパラメータに渡される、
   値渡し引数の自動ラップが廃止され、
   通常の <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> が発生するようになりました。
   コンストラクタ引数に変数をリファレンス渡しするには、
   配列の値にリファレンスの値を代入します: <code class="code">$ctor_args = [&amp;$valByRef]</code>
  </p>

  <p class="simpara">
   <span class="methodname"><a href="pdostatement.fetch.php" class="methodname">PDOStatement::fetch()</a></span>,
   <span class="methodname"><a href="pdostatement.fetchobject.php" class="methodname">PDOStatement::fetchObject()</a></span>,
   <span class="methodname"><a href="pdostatement.fetchall.php" class="methodname">PDOStatement::fetchAll()</a></span> の呼び出し中に、
   <span class="methodname"><a href="pdostatement.setfetchmode.php" class="methodname">PDOStatement::setFetchMode()</a></span> を呼び出そうとすると、
   <span class="exceptionname"><a href="class.error.php" class="exceptionname">Error</a></span> がスローされるようになりました。
   これはたとえば、
   オブジェクトのフェッチ中に Statement
   オブジェクトをコンストラクタの引数として渡す際に、
   <span class="methodname"><a href="pdostatement.setfetchmode.php" class="methodname">PDOStatement::setFetchMode()</a></span> を呼び出す場合が該当します。
  </p>

  <p class="simpara">
   定数 <strong><code><a href="pdo.constants.fetch-modes.php#pdo.constants.fetch-group">PDO::FETCH_GROUP</a></code></strong>,
   <strong><code><a href="pdo.constants.fetch-modes.php#pdo.constants.fetch-unique">PDO::FETCH_UNIQUE</a></code></strong>,
   <strong><code><a href="pdo.constants.fetch-modes.php#pdo.constants.fetch-classtype">PDO::FETCH_CLASSTYPE</a></code></strong>,
   <strong><code><a href="pdo.constants.fetch-modes.php#pdo.constants.fetch-props-late">PDO::FETCH_PROPS_LATE</a></code></strong>,
   <strong><code><a href="pdo.constants.fetch-modes.php#pdo.constants.fetch-serialize">PDO::FETCH_SERIALIZE</a></code></strong> の値が変更されました。
  </p>

  <p class="simpara">
   <strong><code><a href="pdo.constants.fetch-modes.php#pdo.constants.fetch-props-late">PDO::FETCH_PROPS_LATE</a></code></strong>
   が <strong><code><a href="pdo.constants.fetch-modes.php#pdo.constants.fetch-class">PDO::FETCH_CLASS</a></code></strong>
   以外のフェッチモードと一緒に使われた場合、
   <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> がスローされるようになりました。
   これは、他のフェッチフラグの動作と一貫性を持たせるためです。
  </p>

  <p class="simpara">
   <span class="methodname"><a href="pdostatement.fetchall.php" class="methodname">PDOStatement::fetchAll()</a></span> で、
   <strong><code><a href="pdo.constants.fetch-modes.php#pdo.constants.fetch-into">PDO::FETCH_INTO</a></code></strong> をフェッチモードとして使おうとすると、
   <strong><code><a href="pdo.constants.fetch-modes.php#pdo.constants.fetch-lazy">PDO::FETCH_LAZY</a></code></strong>
   と同様に <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> がスローされるようになりました。
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.pdo-firebird">
  <h3 class="title">PDO_FIREBIRD</h3>

  <p class="simpara">
   Firebird ドライバが生成した <span class="classname"><a href="class.pdostatement.php" class="classname">PDOStatement</a></span>
   に対して、長過ぎるカーソル名を設定しようとすると、
   <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> がスローされるようになりました。
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.pdo-sqlite">
  <h3 class="title">PDO_SQLITE</h3>

  <p class="simpara">
   SQLite の <span class="methodname"><a href="pdo.quote.php" class="methodname">PDO::quote()</a></span> は、
   文字列に null バイトが含まれていた場合に、
   エラーモードに応じて警告を発生させたり、例外をスローするようになりました。
  </p>

  <p class="simpara">
   <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>
   の動作とより一致するようになります。
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.posix">
  <h3 class="title">POSIX</h3>

  <p class="simpara">
   <span class="function"><a href="function.posix-kill.php" class="function">posix_kill()</a></span> は、
   process_id 引数がプラットフォームがサポートする範囲
   (符号付きまたは long）より小さいか大きい場合に
   <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> をスローするようになりました。

   <span class="function"><a href="function.posix-setpgid.php" class="function">posix_setpgid()</a></span> は、
   process_id または process_group_id が 0 未満、
   またはプラットフォームがサポートする範囲より大きい場合に
   <span class="classname"><a href="class.valueerror.php" class="classname">ValueError</a></span> をスローするようになりました。
  </p>

  <p class="simpara">
   <span class="function"><a href="function.posix-setrlimit.php" class="function">posix_setrlimit()</a></span> は、
   hard_limit または soft_limit 引数が -1 より小さい場合、
   または soft_limit が hard_limit より大きい場合に
   <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> をスローします。
  </p>

 </div>

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

  <p class="simpara">
   無効なターゲットにアトリビュートが適用された場合、
   <span class="methodname"><a href="reflectionattribute.newinstance.php" class="methodname">ReflectionAttribute::newInstance()</a></span> は、
   内部的なアトリビュート向けに例外をスローするようになりました。
   #[\DelayedTargetValidation] を使うと、
   発生するエラーがコンパイル時から実行時に遅延されます。
   
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.session">
  <h3 class="title">Session</h3>

  <p class="simpara">
   パイプ文字 (<code class="literal">|</code>)
   が含まれたキーを持つ <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var>
   にセッションデータを書き込もうとすると、
   黙って失敗するのではなく、警告が発生するようになりました。
   
  </p>

  <p class="simpara">
   <span class="function"><a href="function.session-start.php" class="function">session_start()</a></span> は、
   オプション引数をより厳格に扱うようになりました。
   配列が連想配列でない場合、
   <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> がスローされるようになりました。
   read_and_close の値が int と互換性のない値の場合、
   <span class="exceptionname"><a href="class.typeerror.php" class="exceptionname">TypeError</a></span> がスローされるようになりました。
  </p>

  <p class="simpara">
   <span class="function"><a href="function.setlocale.php" class="function">setlocale()</a></span> の
   <code class="parameter">locales</code> 引数に整数 <code class="literal">0</code>
   を渡すことはサポートされなくなり、
   <span class="exceptionname"><a href="class.typeerror.php" class="exceptionname">TypeError</a></span> がスローされるようになりました。
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.simplexml">
  <h3 class="title">SimpleXML</h3>

  <p class="simpara">
   ノードの集合以外を返す XPath 式を
   <span class="methodname"><a href="simplexmlelement.xpath.php" class="methodname">SimpleXMLElement::xpath()</a></span>
   に渡した場合、警告が発生し、<strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> を返すようになりました。
   これより前のバージョンでは、黙って失敗し、
   空の配列を返していました。
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.snmp">
  <h3 class="title">SNMP</h3>

  <p class="simpara">
   <span class="function"><a href="function.snmpget.php" class="function">snmpget()</a></span>,
   <span class="function"><a href="function.snmpset.php" class="function">snmpset()</a></span>,
   <span class="function"><a href="function.snmp2-get.php" class="function">snmp2_get()</a></span>,
   <span class="function"><a href="function.snmp2-set.php" class="function">snmp2_set()</a></span>,
   <span class="function"><a href="function.snmp3-get.php" class="function">snmp3_get()</a></span>,
   <span class="function"><a href="function.snmp3-set.php" class="function">snmp3_set()</a></span>
   <span class="methodname"><a href="snmp.construct.php" class="methodname">SNMP::__construct()</a></span> は、
   <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> をスローするようになりました。
   スローされるのは、ホスト名が長すぎたり、
   ホスト名が null バイトを含んでいたり、
   負の値や 65535 を超えるポート番号を指定したり、 
   タイムアウトやリトライの値が -1 より小さかったり、大きすぎたりする場合です。
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.soap">
  <h3 class="title">SOAP</h3>

  <p class="simpara">
   <span class="methodname"><a href="soapclient.dorequest.php" class="methodname">SoapClient::__doRequest()</a></span> に、
   オプションの <code class="parameter">$uriParserClass</code>
   パラメータが新しく追加されました。
   これは、文字列と <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> を受け入れます。
   <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> を渡すと、オリジナルの <span class="function"><a href="function.parse-url.php" class="function">parse_url()</a></span>
   ベースのメソッドになります。
   <span class="classname"><a href="class.uri-rfc3986-uri.php" class="classname">Uri\Rfc3986\Uri</a></span> や
   <span class="classname"><a href="class.uri-whatwg-url.php" class="classname">Uri\WhatWg\Url</a></span> を渡すと、
   新しいバックエンドを使います。
   
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.sockets">
  <h3 class="title">Sockets</h3>

  <p class="simpara">
   <span class="function"><a href="function.socket-create-listen.php" class="function">socket_create_listen()</a></span>,
   <span class="function"><a href="function.socket-bind.php" class="function">socket_bind()</a></span>,
   <span class="function"><a href="function.socket-sendto.php" class="function">socket_sendto()</a></span> は、
   ポートが 0 未満または 65535 を超える場合、
   または hints 配列のエントリが数値インデックスの場合に、
   <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> をスローするようになりました。
  </p>

  <p class="simpara">
   <span class="function"><a href="function.socket-addrinfo-lookup.php" class="function">socket_addrinfo_lookup()</a></span> は、
   hints 値のいずれかが int 型にキャストできない場合に、
   <span class="exceptionname"><a href="class.typeerror.php" class="exceptionname">TypeError</a></span> をスローするようになりました。
   また、これらの値のいずれかがオーバーフローした場合、
   <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> をスローする可能性があります。
  </p>

  <p class="simpara">
   <span class="function"><a href="function.socket-set-option.php" class="function">socket_set_option()</a></span> 関数で
   <strong><code><a href="sockets.constants.php#constant.mcast-leave-group">MCAST_LEAVE_GROUP</a></code></strong>/<strong><code><a href="sockets.constants.php#constant.mcast-leave-source-group">MCAST_LEAVE_SOURCE_GROUP</a></code></strong> を指定した場合、
   値が有効なオブジェクトまたは配列でない場合は例外がスローされるようになりました。
  </p>

  <p class="simpara">
   <span class="function"><a href="function.socket-set-option.php" class="function">socket_set_option()</a></span>
   をマルチキャストコンテキストで呼び出す場合、
   作成されたソケットが
   <strong><code><a href="sockets.constants.php#constant.af-inet">AF_INET</a></code></strong>/<strong><code><a href="sockets.constants.php#constant.af-inet6">AF_INET6</a></code></strong>
   ファミリでない場合、<span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> がスローされるようになりました。
  </p>

 </div>

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

  <p class="simpara">

   <span class="classname"><a href="class.arrayobject.php" class="classname">ArrayObject</a></span> は 列挙型を受け入れなくなりました。
   列挙型の <span class="property">$name</span> や <span class="property">$value</span>
   プロパティが、PHP エンジンの想定を壊す可能性があるからです。
  </p>

  <p class="simpara">
   <span class="methodname"><a href="splfileobject.fwrite.php" class="methodname">SplFileObject::fwrite()</a></span> の
   <code class="parameter">$length</code> パラメータは、nullable になりました。
   デフォルト値が <code class="literal">0</code> から <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> に変更されています。
  </p>

 </div>

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

  <p class="simpara">
   printf ファミリの関数に精度を指定しないフォーマットを使った場合、
   精度を 0 として扱うようになりました。
   これより前のバージョンでは、誤って精度をリセットしていました。
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.tidy">
  <h3 class="title">Tidy</h3>

  <p class="simpara">
   <span class="methodname"><a href="tidy.construct.php" class="methodname">tidy::__construct()</a></span>,
   <span class="methodname"><a href="tidy.parsefile.php" class="methodname">tidy::parseFile()</a></span>,
   <span class="methodname"><a href="tidy.parsestring.php" class="methodname">tidy::parseString()</a></span> は、
   無効な設定値が含まれていたり、
   読み取り専用の内部エントリを設定しようとした場合に
   <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> をスローするようになりました。
   設定キーが文字列でない場合は、
   <span class="exceptionname"><a href="class.typeerror.php" class="exceptionname">TypeError</a></span> がスローされるようになっています。
  </p>

 </div>

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