クラスにアトリビュート #[\AllowDynamicProperties]
を付加していない場合、 動的にプロパティを生成することは推奨されなくなりました。 stdClass で動的なプロパティを使うことはまだ許可されています。 マジックメソッド __get() / __set() を使う場合は、この変更の影響は受けません。 動的なプロパティによる非推奨の警告については、以下によって対応できます:
#[\AllowDynamicProperties]
を付加する (すべての子クラスにも適用されます) $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() が使えます。
内部メソッド SplFileInfo::_bad_state_ex() は、推奨されなくなりました。
utf8_encode() と utf8_decode() は、推奨されなくなりました。