PHP 8.3 で変わったこと

PHP 8.3
PHP 8.3は、2023年(令和5年)11月23日に正式版がリリースされた。クラス定数の型宣言やクラス定数を動的に参照するなどの改善や、ランダムな文字列を生成するメソッドや、文字列が有効なJSON文字列であるかどうかを検証する関数といった機能が追加になった。
👉公式ダウンロードサイト

目次

新機能

  • クラス定数に対する型宣言‥‥クラス、インターフェイス、トレイト、そして列挙型の定数は、新たに型宣言をサポートする。
  • readonly機能の修正‥‥無名クラスも、readonly としてマークできるようになった。読み取り専用プロパティは、clone している間に再初期化できるようになった。
  • クラス定数への動的なアクセス構文‥‥クラス定数は、C::{$name} という構文で動的にアクセスできるようになった。
  • マジックメソッドで作ったクロージャ‥‥マジックメソッドで作ったクロージャは、名前付き引数を受け入れるようになった。
  • トレイトのメソッドに対する final 指定‥‥トレイトからメソッドを使う場合に、そのメソッドに対して final を指定できるようになった。
  • static 変数の初期化‥‥static 変数を初期化する際に、任意の式が使えるようになった。
  • INI 変数に対するデフォルト値指定‥‥iniファイル内で、デフォルト値を指定する文法をサポートした。
  • CLI‥‥複数のファイルの文法チェックを、一度にできるようになりました。
  • DOM‥‥プロパティ DOMElement::$className と、DOMElement::$id が追加。libxml2 の制限により、現時点でこれらはバイナリセーフではない。つまり、プロパティの値から NUL バイト以降が切り捨てられる。プロパティ DOMNode::$isConnectedDOMNameSpaceNode::$isConnected が追加。プロパティ DOMNode::$parentElementDOMNameSpaceNode::$parentElement が追加。
  • FFI‥‥FFI\CData を他の FFI\CData に代入できるようになった。
  • Opcache‥‥opcache_get_status()['scripts'][n]['revalidate'] の値に、いつスクリプトの更新チェックを行うかの予定が Unix タイムスタンプの形で含まれるようになった。いつチェックを行うかは、opcache.revalidate_freq によって決まる。
  • POSIX‥‥ posix_getrlimit () で、リソースの制限値をひとつ取得できる、オプションの $res パラメータが使えるようになった。 posix_isatty () は、通常のパラメータ解釈のセマンティクス(ZPP) に従い、整数値に対して警告を発生させるようになった。 posix_ttyname () は、通常のパラメータ解釈のセマンティクス(ZPP) に従い、整数値に対して警告を発生させるようになりました。さらに、無効なファイルディスクリプタの整数値に対しても、警告を発生させるようになった。
  • Streams‥‥以前のバージョンでは実装されていなかった新しい通知として、STREAM_NOTIFY_COMPLETED が発生させられるようになった。

非推奨

  • 空文字列や、数値形式でない文字列、英数字でない文字列に対して、加算子 (++)減算子 (--) を使うことは推奨されなくなった。
  • 引数を渡さずに  get_class () /  get_parent_class () をコールすることは推奨されなくなった。
  • $dba を第3引数に渡して  dba_fetch () をコールすることは、推奨されなくなりました。
  • FFI::cast(), FFI::new(), FFI::type() を static メソッドとしてコールすることは、推奨されなくなった。
  • 定数 U_MULTIPLE_DECIMAL_SEP*E*RATORS は、推奨されなくなった。代わりに U_MULTIPLE_DECIMAL_SEP*A*RATORS を使おう。
  • 定数 NumberFormatter::TYPE_CURRENCY は、推奨されなくなった。
  •  ldap_connect () に、$hostname と $port を別々に渡してコールすることは、推奨されなくなった。
  •  mb_strimwidth () に負の $width を渡すことは、推奨されなくなった。
  • resource と $length を渡して Phar::setStub() をコールすることは、推奨されなくなった。$phar->setStub(stream_get_contents($resource)); に置き換えよう。
  • メルセンヌ・ツイスタ の動作モード MT_RAND_PHP は、推奨されなくなった。
  • ReflectionProperty::setValue() にひとつだけ引数を渡してコールすることは、推奨されなくなった。static プロパティを設定するには、最初の引数に null を渡そう。
  •  assert_options () 関数は、推奨されなくなった。
  • 定数 ASSERT_ACTIVE, ASSERT_BAIL, ASSERT_CALLBACK, ASSERT_EXCEPTION, ASSERT_WARNING は、推奨されなくなった。
  • INI 設定 assert.* は、推奨されなくなった。
  • SQLite3 で例外を使うことが推奨されるようになった。警告は将来のバージョンで削除される。
  • 定数 ZipArchive::FL_RECOMPRESS は、推奨されなくなった。将来の libzip のバージョンで削除される。

参考サイト

(この項おわり)
header