<?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.deprecated.php',
    1 => 'PHP 8.2.x で推奨されなくなる機能',
    2 => 'PHP 8.2.x で推奨されなくなる機能',
  ),
  'up' => 
  array (
    0 => 'migration82.php',
    1 => 'PHP 8.1.x から PHP 8.2.x への移行',
  ),
  'prev' => 
  array (
    0 => 'migration82.incompatible.php',
    1 => '下位互換性のない変更点',
  ),
  'next' => 
  array (
    0 => 'migration82.other-changes.php',
    1 => 'その他の変更',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ja',
    'path' => 'appendices/migration82/deprecated.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

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

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

  <div class="sect3" id="migration82.deprecated.core.dynamic-properties">
   <h4 class="title">動的なプロパティの利用</h4>

   <p class="para">
    クラスにアトリビュート <code class="code">#[\AllowDynamicProperties]</code> を付加していない場合、
    動的にプロパティを生成することは推奨されなくなりました。
    <span class="classname"><a href="class.stdclass.php" class="classname">stdClass</a></span> で動的なプロパティを使うことはまだ許可されています。
    マジックメソッド
    <a href="language.oop5.overloading.php#object.get" class="link">__get()</a> / <a href="language.oop5.overloading.php#object.set" class="link">__set()</a>
    を使う場合は、この変更の影響は受けません。
    動的なプロパティによる非推奨の警告については、以下によって対応できます:

    <ul class="simplelist">
     <li>プロパティを宣言する (好ましい対応方法です)</li>
     <li>
      クラスにアトリビュート <code class="code">#[\AllowDynamicProperties]</code> を付加する
      (すべての子クラスにも適用されます)
     </li>
     <li>
      追加のデータをオブジェクトと関連付ける必要があるが、
      そのオブジェクトがデータを所有していない場合、
      <span class="classname"><a href="class.weakmap.php" class="classname">WeakMap</a></span> を使う
     </li>
    </ul>
   </p>
  </div>

  <div class="sect3" id="migration82.deprecated.core.relative-callables">
   <h4 class="title">部分的にしかサポートされていない callable</h4>

   <p class="para">
    <code class="code">$callable()</code> 形式で呼び出せない
    (但し、<span class="function"><a href="function.call-user-func.php" class="function">call_user_func()</a></span> を使うと呼び出せる) callable は、推奨されなくなりました。
    
    特に注意すべきなのは以下です:
    <ul class="simplelist">
     <li><code class="code">&quot;self::method&quot;</code></li>
     <li><code class="code">&quot;parent::method&quot;</code></li>
     <li><code class="code">&quot;static::method&quot;</code></li>
     <li><code class="code">[&quot;self&quot;, &quot;method&quot;]</code></li>
     <li><code class="code">[&quot;parent&quot;, &quot;method&quot;]</code></li>
     <li><code class="code">[&quot;static&quot;, &quot;method&quot;]</code></li>
     <li><code class="code">[&quot;Foo&quot;, &quot;Bar::method&quot;]</code></li>
     <li><code class="code">[new Foo, &quot;Bar::method&quot;]</code></li>
    </ul>

    この変更は、
    <code class="code">&quot;A::method&quot;</code> や <code class="code">[&quot;A&quot;, &quot;method&quot;]</code>
    のような通常のメソッド呼び出し形式の callable には影響しません。
   </p>
   
   
  </div>

  <div class="sect3" id="migration82.deprecated.core.dollar-brace-interpolation">
   <h4 class="title"><code class="code">&quot;${var}&quot;</code> / <code class="code">&quot;${expr}&quot;</code> 形式の、文字列への値の埋め込み</h4>

   <p class="para">
    <code class="code">&quot;${var}&quot;</code> と <code class="code">&quot;${expr}&quot;</code> 形式の文字列への値の埋め込みは、推奨されなくなりました。
    <code class="code">&quot;$var&quot;/&quot;{$var}&quot;</code> や <code class="code">&quot;{${expr}}&quot;</code> 形式をそれぞれ使ってください。
    
   </p>
  </div>

 </div>

 <div class="sect2" id="migration82.deprecated.mbstring">
  <h3 class="title">マルチバイト文字列</h3>

  <p class="para">
   &#039;テキストエンコーディング&#039;
   <code class="literal">QPrint</code>, <code class="literal">Base64</code>,
   <code class="literal">Uuencode</code>, <code class="literal">HTML-ENTITIES</code> を使うことは、
   全ての mbstring の関数で推奨されなくなりました。

   mbstring でサポートされている他のテキストエンコーディングと異なり、
   これらは Unicode のコードポイント列でエンコードされておらず、
   生のバイト列でエンコードされています。

   これらのテキストエンコーディングが指定された場合、
   ほとんどの mbstring 関数では、何が正しい戻り値なのか明確でありません。

   さらに、これらのエンコーディングについてはすべて、PHP には別の組み込みの実装が存在します。
   たとえば、UUencode されたデータについては、
   <span class="function"><a href="function.convert-uuencode.php" class="function">convert_uuencode()</a></span> / <span class="function"><a href="function.convert-uudecode.php" class="function">convert_uudecode()</a></span> が使えます。
  </p>
 </div>

 <div class="sect2" id="migration82.deprecated.spl">
  <h3 class="title">Standard PHP Library(SPL)</h3>

  <p class="para">
   内部メソッド <span class="methodname"><strong>SplFileInfo::_bad_state_ex()</strong></span> は、推奨されなくなりました。
  </p>
 </div>

 <div class="sect2" id="migration82.deprecated.standard">
  <h3 class="title">標準ライブラリ</h3>

  <p class="para">
   <span class="function"><a href="function.utf8-encode.php" class="function">utf8_encode()</a></span> と <span class="function"><a href="function.utf8-decode.php" class="function">utf8_decode()</a></span> は、推奨されなくなりました。
  </p>
 </div>

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