## PHP 8.2.x で推奨されなくなる機能

### PHP コア

#### 動的なプロパティの利用

クラスにアトリビュート `#[\AllowDynamicProperties]` を付加していない場合、 動的にプロパティを生成することは推奨されなくなりました。 stdClass で動的なプロパティを使うことはまだ許可されています。 マジックメソッド __get() / __set() を使う場合は、この変更の影響は受けません。 動的なプロパティによる非推奨の警告については、以下によって対応できます:

- プロパティを宣言する (好ましい対応方法です)
- クラスにアトリビュート `#[\AllowDynamicProperties]` を付加する (すべての子クラスにも適用されます)
- 追加のデータをオブジェクトと関連付ける必要があるが、 そのオブジェクトがデータを所有していない場合、 WeakMap を使う

#### 部分的にしかサポートされていない callable

`$callable()` 形式で呼び出せない (但し、call_user_func() を使うと呼び出せる) callable は、推奨されなくなりました。 特に注意すべきなのは以下です:

- `"self::method"`
- `"parent::method"`
- `"static::method"`
- `["self", "method"]`
- `["parent", "method"]`
- `["static", "method"]`
- `["Foo", "Bar::method"]`
- `[new Foo, "Bar::method"]`

この変更は、 `"A::method"` や `["A", "method"]` のような通常のメソッド呼び出し形式の callable には影響しません。

#### `"${var}"` / `"${expr}"` 形式の、文字列への値の埋め込み

`"${var}"` と `"${expr}"` 形式の文字列への値の埋め込みは、推奨されなくなりました。 `"$var"/"{$var}"` や `"{${expr}}"` 形式をそれぞれ使ってください。

### マルチバイト文字列

'テキストエンコーディング' `QPrint`, `Base64`, `Uuencode`, `HTML-ENTITIES` を使うことは、 全ての mbstring の関数で推奨されなくなりました。 mbstring でサポートされている他のテキストエンコーディングと異なり、 これらは Unicode のコードポイント列でエンコードされておらず、 生のバイト列でエンコードされています。 これらのテキストエンコーディングが指定された場合、 ほとんどの mbstring 関数では、何が正しい戻り値なのか明確でありません。 さらに、これらのエンコーディングについてはすべて、PHP には別の組み込みの実装が存在します。 たとえば、UUencode されたデータについては、 convert_uuencode() / convert_uudecode() が使えます。

### Standard PHP Library(SPL)

内部メソッド SplFileInfo::_bad_state_ex() は、推奨されなくなりました。

### 標準ライブラリ

utf8_encode() と utf8_decode() は、推奨されなくなりました。

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open