'PHP8.3は、PHP言語のメジャーアップデートです。クラス定数の型付け、読み取り専用プロパティのクローン、ランダム機能追加など、多くの新機能が含まれています。さらにパフォーマンスの向上、バグフィックス、コードのクリーンナップも行われました。', 'documentation' => 'ドキュメント', 'main_title' => 'Released!', 'main_subtitle' => 'PHP8.3は、PHP言語のメジャーアップデートです。
クラス定数の型付け、読み取り専用プロパティのクローン、ランダム機能追加など、多くの新機能が含まれています。さらにパフォーマンス向上、バグフィックス、コードのクリーンナップも行われました。', 'upgrade_now' => 'PHP8.3へのアップデートはこちら!', 'readonly_title' => '読み取り専用プロパティのディープクローン', 'readonly_description' => 'readonlyプロパティをクローンする際、__cloneメソッド内で一度だけプロパティを変更できるようになりました。', 'json_validate_title' => '関数json_validate()の追加', 'json_validate_description' => '関数json_validate()は、json_decode()よりも効率的にJSONが正しい形式かをチェックすることができます。', 'typed_class_constants_title' => 'クラス定数の型付け', 'override_title' => 'アトリビュート#[\Override]の追加', 'override_description' => 'メソッドにアトリビュート#[\Override]を追加すると、親クラスもしくはインターフェイスに同じメソッドが定義されていることを確認します。これにより、メソッドを意図的にオーバーライドしていると明示することができ、また親メソッドが変更されたときに検出できます。', 'randomizer_getbytesfromstring_title' => 'メソッドRandomizer::getBytesFromString()の追加', 'randomizer_getbytesfromstring_description' => 'PHP8.2で実装されたRandomエクステンションに、ランダム文字列を生成する新たなメソッドを追加しました。これにより、サブドメイン名などちょっとした文字列や任意長の数値型文字列などを容易に生成可能となります。', 'randomizer_getfloat_nextfloat_title' => 'メソッドRandomizer::getFloat()Randomizer::nextFloat()の追加', 'randomizer_getfloat_nextfloat_description' => '

浮動小数点演算はその精度や丸め要素により、偏りのない乱数を生成することは比較的高難度であり、よく見られるユーザランド実装は結果が偏っていたり範囲外になっていたりすることがよくあります。

Randomizerエクステンションでは普遍的な浮動小数乱数を生成するために2つのメソッドが実装されました。Randomizer::getFloat()Drawing Random Floating-Point Numbers from an Interval. Frédéric Goualard・ACM Trans. Model. Comput. Simul.・32:3・2022.という論文で紹介されたγ-sectionというアルゴリズムで乱数を生成します。

', 'dynamic_class_constant_fetch_title' => 'クラス定数の文字列指定', 'command_line_linter_title' => 'コマンドラインLinterの複数ファイル指定', 'command_line_linter_description' => '

コマンドラインLinterに複数のファイルを渡せるようになりました。

', 'new_classes_title' => '新しいクラス・インターフェイス・関数', 'new_dom' => 'DOMにDOMElement::getAttributeNames()DOMElement::insertAdjacentElement()DOMElement::insertAdjacentText()DOMElement::toggleAttribute()DOMNode::contains()DOMNode::getRootNode()DOMNode::isEqualNode()DOMNameSpaceNode::contains()DOMParentNode::replaceChildren()メソッドが追加されました。', 'new_intl' => 'IntlにIntlCalendar::setDate()IntlCalendar::setDateTime()IntlGregorianCalendar::createFromDate()IntlGregorianCalendar::createFromDateTime()が追加されました。', 'new_ldap' => 'LDAPにldap_connect_wallet()ldap_exop_sync()が追加されました。', 'new_mb_str_pad' => 'マルチバイト文字列関数にmb_str_pad()が追加されました。', 'new_posix' => 'POSIX関数にposix_sysconf()posix_pathconf()posix_fpathconf()posix_eaccess()が追加されました。', 'new_reflection' => 'リフレクションにReflectionMethod::createFromMethodName()が追加されました。', 'new_socket' => 'ソケットにsocket_atmark()が追加されました。', 'new_str' => '文字列関数にstr_increment()str_decrement()stream_context_set_options()が追加されました。', 'new_ziparchive' => 'Zip関数にZipArchive::getArchiveFlag()が追加されました。', 'new_openssl_ec' => 'OpenSSLエクステンションがEC parameterによる鍵の生成に対応しました。', 'new_ini' => '最大スタックサイズを設定するINI設定zend.max_allowed_stack_sizeが追加されました', 'ini_fallback' => 'iniファイルがデフォルト値を指定する構文に対応しました。', 'anonymous_readonly' => '無名クラスをreadonlyにすることができるようになりました。', 'bc_title' => '非推奨、および互換性のない変更', 'bc_datetime' => 'Date/Timeエクステンションの改善。', 'bc_arrays' => '配列を負数nから始めた場合、次の自動採番は0ではなくn + 1になりました。', 'bc_range' => 'range()関数の挙動が変更になりました。', 'bc_traits' => 'トレイトとstaticプロパティの同時使用時の挙動が変更されました。', 'bc_umultipledecimalseparators' => '定数U_MULTIPLE_DECIMAL_SEPERATORSは非推奨になりました。U_MULTIPLE_DECIMAL_SEPARATORSを使いましょう。', 'bc_mtrand' => '正しくないMt19937実装である定数MT_RAND_PHPは非推奨になりました。', 'bc_reflection' => 'メソッドReflectionClass::getStaticProperties()の返り値がnull許容型ではなくなりました。', 'bc_ini' => 'INI設定assert.activeassert.bailassert.callbackassert.exceptionassert.warningは非推奨になりました。', 'bc_standard' => '関数get_class()get_parent_class()は引数が必須になりました。', 'bc_sqlite3' => 'SQLite3のエラーモードのデフォルトが例外になりました。', 'footer_title' => 'さらなる性能向上、よりよい構文、すぐれた型安全性。', 'footer_description' => '

PHP8.3のダウンロードはこちら。WindowsバイナリはPHP for Windowsで見つけることができます。ChangeLogはこちらです。

マニュアルにあるマイグレーションガイドでは、新機能や変更点についてのより詳しい情報が記載されています。

', ];